常量
1、常量定義
通過const關鍵字
func main(){
const pi float64 = 3.1415926
const zero = 0.0 //無類型浮點常量
const(
size int64 =1024
eof = -1
)
const u,v float32 =0,3 //多重賦值
const a,b,c = 3,4,"foo"
//常量的賦值是一個編譯器行爲,所以右值不能出現任何需要運行期才能得出結果的表達式
}
2、預定義常量
Go語言預定義了這些常量:true、false、iota
iota比較特殊,可以被認爲是一個可被編譯器修改的常量,在每個const關鍵字出現時被重置爲0,然後在下一個const出現之前,每出現一次iota,所代表的的數字就會自動增1。
func main(){
const ( // iota被重設爲0
c0 = iota // c0 == 0
c1 = iota // c1 == 1
c2 = iota // c2 == 2
)
const (
a = 1 << iota // a == 1 (iota在每個const開頭被重設爲0)
b = 1 << iota // b == 2
c = 1 << iota // c == 4
)
const (
u = iota * 42 // u == 0
v float64 = iota * 42 // v == 42.0
w = iota * 42 // w == 84
)
const x = iota // x == 0 (因爲iota又被重設爲0了)
const y = iota // y == 0 (同上)
//如果兩個const的賦值語句的表達式是一樣的,那麼可以省略後一個賦值表達式。因此,上
//面的前兩個const語句可簡寫爲:
const ( // iota被重設爲0
c00 = iota // c00 == 0
c01 // c01 == 1
c02 // c02 == 2
)
const (
a0 = 1 <<iota // a0 == 1 (iota在每個const開頭被重設爲0)
b0 // b0 == 2
c0 // c0 == 4
)
}
3、枚舉
Go語言不支持enum關鍵字
下面是常規的枚舉表示法,其中定義了一系列的整型常量
func main(){
const (
Sunday = iota
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
numberOfDays // 這個常量沒有導出,由於是小寫字母開頭的
)
// 同Go語言的其他符號(symbol)一樣,以大寫字母開頭的常量在包外可見。
// 以上例子中numberOfDays爲包內私有,其他符號則可被其他包訪問。
}