變量
用關鍵字var聲明變量
var v1 int //int類型
var v2 string //string類型
var v3 [10]int //數組
var v4 []int //數組切片
var v5 struct{
f int
}
var v6 *int //指針
var v7 map[string]int //map類型,key爲string,value爲int
var v8 func[a int]int可以將若干需要聲明的變量放置在一起:
var(
v1 string
v2 int
)變量初始化
var v1 int =10
var v2 = 10 //編譯器自動推導
v3 := 10 //編譯器自動推導
:= 出現在該符號左側的變量(如v3)不應該是已經聲明過的,否則會導致編譯錯誤匿名變量
我們在使用傳統的強類型語言編程時,經常會出現這種情況,即在調用函數時爲了獲取一個
值,卻因爲該函數返回多個值而不得不定義一堆沒用的變量。在Go中這種情況可以通過結合使
用多重返回和匿名變量來避免這種醜陋的寫法,讓代碼看起來更加優雅。
假 設 GetName() 函 數 的 定 義 如 下 , 它 返 回 3 個 值 , 分 別 爲 firstName 、 lastName 和
nickName :
func GetName() (firstName, lastName, nickName string) {
return “May”, “Chan”, “Chibi Maruko”
}
若只想獲得 nickName ,則函數調用語句可以用如下方式編寫:
_, _, nickName := GetName()
這種用法可以讓代碼非常清晰,基本上屏蔽掉了可能混淆代碼閱讀者視線的內容,從而大幅
降低溝通的複雜度和代碼維護的難度。常量
通過關鍵字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
預定義常量
iota:可被編譯器修改的常量,在每一個const關鍵字出現時被重置爲0,在下一個const出現之前,沒出現一次iota,其所代表的數字會自動增1
const (
c0 = iota //c0 = 0
c1 = iota //c1 = 1
c2 = iota //c2=2
)枚舉
const (
Sunday = iota
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
numberOfDays
)
同Go語言的其他符號(symbol)一樣,以大寫字母開頭的常量在包外可見。
以上例子中 numberOfDays 爲包內私有,其他符號則可被其他包訪問類型
關鍵字 | 類型 |
---|---|
bool | 布爾類型 |
int8,byte,int16,int,uint,uintptr等 | 整形 |
float32,float64 | 浮點類型 |
complex64,complex128 | 複數類型 |
string | 字符串 |
rune | 字符類型 |
error | 錯誤類型 |
pointer | 指針 |
array | 數組 |
slice | 切片 |
map | 字典 |
chan | 通道 |
struct | 結構體 |
interface | 接口 |