GO语言学习入门笔记系列详解(二):Go的变量和常量定义

GO语言学习入门笔记系列详解(二):Go的变量和常量定义

变量定义

  • var关键字:说明是一个变量
  • 变量名在前,变量类型在后

函数内定义变量

func variableZeroValue() {
	//变量名在前,变量类型在后
	var a int
	var s string
	//go语言的变量一定会有一个初始值
	//int类型初值是0
	//string类型的初值是"",使用%q可以将空字符串打出来
	fmt.Printf("%d %q\n", a, s)
}
  • go语言函数内的变量一旦定义,就必须使用
func variableValueInit() {
	//自定义赋初值
	var a, b int = 3, 4
	var s string = "abc"
	//go语言的变量一旦定义就必须使用
	fmt.Println(a, b, s)
}
  • 可以不规定变量类型,可以写在一行,会自动识别
func variableTypeDeduction() {
	var a, b, c, s = 3, 4, true, "def"
	fmt.Println(a, b, c, s)
}
  • 函数内定义变量简略写法,用:=表示定义一个变量
func variableShorter() {
	//第一次变量定义可以使用:=
	a, b, c, s := 3, 4, true, "def"
	//之后重新复制不可以
	a = 5
	fmt.Println(a, b, c, s)
}

函数外定义变量

  • 可以省略类型,但是不能用:=来赋初值
//叫做包内变量
var aa = 3
var ss = "hello you"
var bb = true
  • 简单写法
//变量定义
var (
	aa = 3
	ss = "hello you"
	bb = true
)

内建变量类型

变量的类型

  1. bool和string

  2. 整型int,前面加u表示无符号,后面的数字表示规定的长度

    uintptr表示指针,这个指针的长度跟随系统

(u)int,(u)int8,(u)int16,(u)int32,(u)int64,uintptr
  1. byte和rune(长度是32位,相当于char类型)
  2. float32,float64,complex64,complex128(complex表示复数)

复数回顾

image-20220507230834019

e i φ = cos ⁡ φ + i sin ⁡ φ ∣ e i φ ∣ = cos ⁡ 2 φ + sin ⁡ 2 φ = 1 e 0 = 1 , e i π 2 = i e i π = − 1 , e i i 2 π = − i , e i 2 π = 1 \begin{aligned} &e^{i \varphi}=\cos \varphi+i \sin \varphi \\ &\left|e^{i \varphi}\right|=\sqrt{\cos ^{2} \varphi+\sin ^{2} \varphi}=1 \\ &e^{0}=1, e^{i \frac{\pi}{2}}=i \\ &e^{i \pi}=-1, e^{i \frac{i}{2} \pi}=-i, e^{i 2 \pi}=1 \end{aligned} eiφ=cosφ+isinφeiφ=cos2φ+sin2φ =1e0=1,ei2π=ieiπ=1,ei2iπ=i,ei2π=1

Go语言如何表示复数

func euler() {
  //不能写成4*i,会认为i是一个没有定义的变量
	c := 3 + 4i
	fmt.Println(cmplx.Abs(c))
}

强制类型转换

  • 类型转换是强制的

  • 举例子:验证勾股定理

    var a,b int = 3,4

    var c int = math.Sqrt(a*a + b*b)

func triangle()  {
	var a , b int = 3,4
	var c int
	c = int(math.Sqrt(float64(a*a + b*b)))
	fmt.Println(c)
}

常量与枚举

常量定义

常量相当于一个文本替换的动作。

func constants()  {
	const fliename = "abc.txt"
	const a , b = 3,4
	var c int
	c = int(math.Sqrt(a*a + b*b))
	fmt.Println(filename,c)
}

常量的定义也可以使用括号

func constants() {
	const (
	      fliename = "abc.txt"
	      a, b = 3, 4
	)
	var c int
	c = int(math.Sqrt(a*a + b*b))
	fmt.Println(c)
}

枚举定义

  • 没有自增
func enums() {
	const (
		cpp    = 0
		java   = 1
		python = 2
		golang = 3
	)
  fmt.Println(cpp, java, python, golang)
}
  • 带有自增
	const (
		cpp = iota
		java
		python
		golang
	)
  • iota可以作为自增量
//iota可以作为自增值
	const (
		b = 1 << (10 * iota)
		kb
		mb
		gb
		db
	)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值