注意事项!
1、全局变量/常量允许声明但不使用,局部变量/常量声明后必须使用,不然报错:a declared but not used
2、如果你想要交换两个变量的值,则可以简单地使用 a, b = b, a,两个变量的类型必须是相同
3、空白标识符 _ 也被用于抛弃值,_ 实际上是一个只写变量,如值 5 在:_, b = 5, 7 中被抛弃
4、const 声明常量,var 声明变量, := 简写形式默认是声明变量
5、常量表达式中,函数必须是内置函数,否则编译不过,例如:
const (
a = "abc"
b = len(a)
c = unsafe.Sizeof(a)
)
6、const 常量自动赋值,iota 从 0 开始,每赋值一个 iota,则 iota 加 1(iota 只是在同一个 const 常量组内递增,每当有新的 const 关键字时,iota 计数会重新开始)
const (
a = iota //0
b = iota //1
c = iota //2
)
也可简写为
const (
a = iota //0
b //1
c //2
)
iota 间隔赋值,等价于当前 const 内部的赋值语法行的索引
const (
a = 2
c = iota //1
b = 2
d = iota //3
)
7、const 常量若不赋值,会默认使用紧邻上一行的值,若上一行没有值,则报错
const (
a = 1
b //默认使用上面的值 1
)
同理,也可以推广为
const (
a = 0
b //默认使用上面的值 1
c = 2
d //默认使用上面的值 2
)
全局变量:声明方式整理
//=====方式 1
//var x int = 2
//=====方式 2
//var a, b int = 1, 2
//=====方式 3
//var a, b = 1, 2
//=====方式 4
//var a, b = 1, "b"
//=====方式 5
//var (
// a int = 1
// b int = 2
//)
//=====方式 6
//var (
// a = 1
// b = 2
//)
局部变量:声明方式整理
//=====方式 1
//var x int
//x = 2
//=====方式 2
//var x int = 2
//=====方式 3
//x := 2
//=====方式 4
//var a, b int = 1, 2
//=====方式 5
//var a, b = 1, 2
//=====方式 6
//var a, b = 1, "b"
//=====方式 7
//a, b := 1, 2
//=====方式 8(一般用于声明全局变量)
//var (
// a int = 1
// b int = 2
//)
//=====方式 9(一般用于声明全局变量)
//var (
// a = 1
// b = 2
//)