Golang最佳实践
-
局部变量使用
:=
方式进行初始化声明,全局变量使用var进行声明。//全局变量var声明 var globalVar1, globalVar2 int var ( gV3 bool = true//同时进行初始化 gV4 string = "Hello Global" ) //局部变量使用简洁的初始化声明 a, b := 1, 2 fmt.Println(a, b)
-
string
属于值类型,存储在栈内存上,赋值的时候会进行值拷贝,下面c和d两个字符串的地址不同。c := "string" d := c fmt.Println(&c == &d)//false
-
关于const常量和iota
iota,特殊常量,可以认为是一个可以被编译器修改的常量。
iota 在const关键字出现时将被重置为0(const 内部的第一行之前),const中每新增一行常量声明将使 iota 计数一次,因此iota 可理解为 const 语句块中的行索引。const ( a = 1 //1 (iota=0) b //1 (iota=1,同上一行,相当于写b=1) c = b + iota //3 (iota=2,b=1) d //4 (iota=3,同上一行,相当于写b+iota,b=1) e //5 (iota=4,同上一行,相当于写b+iota,b=1) f = "last one but one" // (iota=5) end = iota //6 (iota=6) ) fmt.Println(a, reflect.TypeOf(a)) fmt.Println(b, reflect.TypeOf(b)) fmt.Println(c, reflect.TypeOf(c)) fmt.Println(d, reflect.TypeOf(d)) fmt.Println(e, reflect.TypeOf(e)) fmt.Println(f, reflect.TypeOf(f)) fmt.Println(end, reflect.TypeOf(end)) /* 输出: 1 int 1 int 3 int 4 int 5 int last one but one string 6 int */