声明变量
能声明的数据类型:
https://www.runoob.com/go/go-data-types.html
变量可以声明为全局变量和局部变量,在函数外声明为全局变量,函数内声明为局部变量
声明变量方式为 var 变量名 数据类型
package main
var age int;
func main(){
var name string;
var flag bool
}
最新版本中go可以不用声明数据类型,通过插入的值作为判断来声明变量类型
var age = 1;
var name = "小明"
需要注意的一点是,声明局部变量不引用会报错并且无法编译,而全局变量并不会有这个问题
引用后就能正常使用
批量声明
声明变量时可以一次性声明多个变量 需要用var ()
包含在内
var (
age = 1
flag = true
)
简短变量声明
该声明方法仅限在函数内使用,是根据赋值类型判断该变量数据类型方法
import "fmt"
func main(){
name := "xiaoming"
fmt.println(name)
}
常量
声明时将 var
换成 const
,常量声明必须赋值,声明后,该变量值一般不会更改
const n = 1
也可以做批量声明
const (
n1 = 100
n2 = 200
)
常量的批量声明时,若后面的变量没有声明值的话,会自动赋值为上面最近的值
import "fmt"
const (
n1 = 100
n2 = 200
n3
n4
)
func main() {
fmt.Println(n1,n2,n3,n4)
}
iota
iota
是go语言的常量计数器,只能在常量的表达式使用
iota
在const
关键字时出现被重置为0。const中每新增一行常量声明将使iota
计数一次,定义枚举时会很有用。
const (
n1 = iota // 0
n2 // 1
n3 // 2
n4 // 3
)
当变量声明在一行时
const (
n1,n2 = iota + 1,iota + 2 // n1: 1, n2: 2 iota == 0
n3,n4 = iota + 1,iota + 2 // n3: 2, n4: 3 iota == 1
)
定义数量级
const (
_ = iota // _ 将 0 的值忽略
KB = 1 << (iota * 10) // 2的10次方
MB = 1 << (iota * 10) // 2的20次方
GB = 1 << (iota * 10) // 2的30次方
TB = 1 << (iota * 10) // 2的40次方
PB = 1 << (iota * 10) // 2的50次方
)
匿名变量
匿名变量通常用_
表示,他不会被分配内存空间,常用于忽略函数返回值
const (
n1 = iota // 0
n2 // 1
_ // 2
n3 // 3
)