變量申明
// var 關鍵字
var identifier type
var identifier1, identifier2 type
數(shù)值類型(包括complex64/128)默認零值,
bool默認false,
字符串默認“”,
var a *int、
var a []int、
var a map[string] int、
var a chan int、
var a func(string) int、
var a error // error 是接口 默認nil
可根據值自行判斷類型
:=聲明,省略 var, 注意 :=左側必須聲明新的變量【不等于賦值】,否則產生編譯錯誤,格式:v_name := value只能被用在函數(shù)體內,而不可以用于全局變量的聲明與賦值
//變量批量申明
var (
a string
b int
c bool
d float32
)
var name1 string = "abc"
//編譯器根據變量初始值推倒變量類型
var name2 = "abc"
m := 10 //短變量申明,只能在函數(shù)內部這樣使用
- 聲明了一個局部變量卻沒有在相同的代碼塊中使用它,同樣會得到編譯錯誤
- 全局變量可以聲明但不用
- _ 實際上是一個只寫變量,你不能得到它的值。這樣做是因為 Go 語言中必須使用所有被聲明的變量,但有時你并不需要使用從一個函數(shù)得到的所有返回值
常量
//常量,在程序運行時,不會被修改的量,省略類型說明符 [type]
const identifier [type] = value
const pi = 3.14159
const (
n1 = 1
n2
n3 //默認同上:1
)
//常量計數(shù)器iota
const (
i=1<<iota
j=3<<iota
k
l
)
i= 1
j= 6
k= 12
l= 24
- 常量可以用len(), cap(), unsafe.Sizeof()函數(shù)計算表達式的值。常量表達式中,函數(shù)必須是內置函數(shù)
- 在 const關鍵字出現(xiàn)時將被重置為 0(const 內部的第一行之前),const 中每新增一行常量聲明將使 iota 計數(shù)一次(iota 可理解為 const 語句塊中的行索引)。第一個 iota 等于 0,每當 iota 在新的一行被使用時,它的值都會自動加 1;
- 注意:是行【同行值相同】,不是使用次數(shù)
枚舉
Go語言中沒有枚舉這種數(shù)據類型的,但是可以使用const配合iota模式來實現(xiàn)
const (
a = iota //0
c //1
d //2
)
const (
e, f = iota, iota //e=0, f=0
g = iota //g=1
)
const (
a = iota //0
b //1
c = 100 //100
d //100
e = iota //4
)