golang的常量和变量都以大写字母开头为在包外可见
变量初始化
三种方法:
var v1 int = 10
var v2 = 10
v3 := 10
如果某变量已经初始化,则不能再用:=的方法,会导致编译错误,除非多变量赋值时,其它变量中有一个是未初始化的。
支持多重赋值
i,j = j,i
匿名变量
调用函数时为了获取一个值,却因为该函数返回多个值而不得不定义一堆没用的变量。在Go中这种情况可以通过结合使用多重返回和匿名变量来避免这种丑陋的写法,匿名变量使用。类似于lua。
, _, nickName := GetName()
常量
在Go语言中,常量是指编译期间就已知且不可改变的值。常量可以是数值类型(包括整型、浮点型和复数类型)、布尔类型、字符串类型等。
字面常量
像C语言中常量通常有特定的类型,但是go中是无类型的,只要这个常量在相应类型的值域范围内,就可以作为该类型的常量,比如-99,它可以赋值给int、uint、int32、int64、float32、float64、complex64、complex128等类型的变量。
常量定义
使用const:
const Pi float64 = 3.14159265358979323846
const zero = 0.0 // 无类型浮点常量
const (
size int64 = 1024
eof = -1 // 无类型整型常量
)
const u, v float32 = 0, 3 // u = 0.0, v = 3.0,常量的多重赋值
const a, b, c = 3, 4, “foo”
// a = 3, b = 4, c = “foo”, 无类型整型和字符串常量
常量定义的右值也可以是一个在编译期运算的常量表达式:const mask = 1 << 3
但是运行时才能得到的结果不行,会导致编译错误。
预定义常量
Go语言预定义了这些常量:true、false和iota。
const ( // iota被重设为0
c0 = iota // c0 == 0
c1 = iota // c1 == 1
c2 = iota // c2 == 2
)
iota无论何时都都从const第一个为0开始,无论是否被使用都是递增1的。
const中的某cx如果没有被显示赋值,则和前一个一样。
枚举
Go语言并不支持众多其他语言明确支持的enum关键字。可以使用const代替。