go语言笔记之变量

变量声明类型

变量声明可以包含初始值,每个变量对应一个。

1
var i, j int = 1, 2

变量省略类型

如果初始化值已存在,则可以省略类型;变量会从初始值中获得类型。

1
var i, j = 1, 2 //也可以编译通过

函数内声明变量

在函数级别也可以声明变量

1
2
3
4
func TestVarInitialize(t *testing.T) {
var c, python, java = true, false, "no!" //变量会从初始值中获得类型
t.Log(i, j, c, python, java)
}

输出:1 2 true false no!

多变量一起声明

1
2
3
4
5
6
7
8
9
10
11
func TestMultiVarInit(t *testing.T) {
var (
name string
age int
gender string
)
name = "john"
age = 20
gender = "男性"
fmt.Printf("名字为:%s,年龄: %d,性别:%s \n", name, age, gender)
}

变量在函数外部声明注意点

函数外的每个语句都必须以关键字开始(var, func 等等), := 结构不能在函数外使用

1
var m = 2

在函数中,简洁赋值语句 := 可在类型明确的地方代替 var 声明。

1
2
3
4
5
6
func TestShortVarInitialize(t *testing.T) {
var i, j int = 1, 2
k := 3 //此处可以使用:=
c, python, java := true, false, "no!"
t.Log(m, i, j, k, c, python, java)
}

var 声明结构体类型

1
2
3
4
5
6
7
8
9
10
11
12
13
type Response struct {
Err error
name string
}
func TestVarStruct(t *testing.T) {
//直接初始化
//https://www.cnblogs.com/liyutian/p/10050320.html
//var 声明同样也会为结构体类型的数据分配内存,所以我们才能像上一段代码中那样,在声明了 var s T 之后就能直接给他的字段进行赋值
var resp Response
resp.name = "john"
t.Log(resp)

}

变量交换

go中两个相同类型变量交换可以直接在一句代码上完成,如下所示:

1
2
3
4
5
6
func TestExchange(t *testing.T) {
a := 1
b := 2
a, b = b, a //go中直接赋值
t.Log(a, b) //输出2 1
}

Go与Java声明变量的区别

  1. java中声明变量时类型在变量名的左侧,而Go中在变量名右侧:
  2. java中声明变量必须以分号结束,而Go中不需要分号
  3. java中基础类型变量必须初始化才能使用,而Go中会默认初始化

未完待续…

欢迎关注我的公众号:沉迷Spring
显示 Gitment 评论
0%