// var.go
package main import ( "fmt" ) func main() { // 聲明變量的通常形式是使用 var 關鍵字,能夠一次聲明多個變量 // 1.指定變量類型,若是沒有初始化,則變量默認爲零值 var country string = "cn" var city, town string = "sh", "mh" // 2.根據值自行斷定變量類型 var card = "card" var card1, card2 = 123, "card2" // 3.簡短形式(推薦),省略 var 不帶聲明, 注意 := 左側若是沒有聲明新的變量就產生編譯錯誤 // 不帶聲明格式的只能在函數體中出現 // 等同於 var sex1 int = 1 sex := 0 sex1, sex2 := 1, 2 fmt.Println(country, city, town) fmt.Println(card, card1, card2) fmt.Println(sex, sex1, sex2) // 交換兩個變量的值,類型必須同樣 sex, sex1, sex2 = sex2, sex1, sex fmt.Println(sex, sex1, sex2) var flag bool // 布爾型 var age int // 數字型 var name string // 字符串型 var a *int // 指針類型(Pointer) var b []int // 數組類型 var c map[string] int // Map 類型 var d chan int // Channel 類型 var e func(string) int // 函數類型 var f error // 接口類型(interface) // 結構化類型(struct) // 切片類型 // 未初始化的變量爲零值 fmt.Println(flag) // false fmt.Println(age) // 0 fmt.Println(name) // "" 空字符串 fmt.Println(a) // nil fmt.Println(b) // [] fmt.Println(c) // map[] fmt.Println(d) // nil fmt.Println(e) // nil fmt.Println(f) // nil // 基於架構de數字型,無符號+有符號 //var A uint8 //var B uint16 //var C uint32 //var D uint64 //var E int8 //var F int16 //var G int32 //var H int64 //// 基於架構de浮點型 //var I float32 //var J float64 //var K complex64 //var L complex128 //// 其餘數字類型 //var M byte //var N rune //var O uint //var P int //var Q uintptr }
// var-scope.go package main import ( "fmt" ) // 聲明全局變量 var a int func main() { // 聲明局部變量 var a int = 1 var b int = 10 fmt.Println(a) // 0 fmt.Println(sum(a, b)) // 11 } // 形式參數 func sum(a, b int) int { return a + b }
// const.go
package main import ( "fmt" "unsafe" ) // 顯式類型定義 const A string = "AA" // 隱式類型定義 const B = "BB" // 常量用做枚舉 const ( Unknown = 0 Female = 1 Male = 2 ) // iota 特殊常量,能夠被編譯器修改的常量 // (能夠理解爲 const 語句塊的行索引) const ( a = iota b = iota c = iota ) const ( d = iota e f ) func main() { fmt.Println(A) fmt.Println(B) fmt.Println(Male) fmt.Println(unsafe.Sizeof(A)) // "AA"=16(byte) fmt.Println(a) // 0 fmt.Println(b) // 1 fmt.Println(c) // 2 fmt.Println(d) // 0 fmt.Println(e) // 1 fmt.Println(f) // 2 }
Src:https://github.com/farwish/go-lab/blob/master/go-syntax/var.gohtml
https://github.com/farwish/go-lab/blob/master/go-syntax/var-scope.gogit
https://github.com/farwish/go-lab/blob/master/go-syntax/const.gogithub