1. 程式人生 > >GO基礎知識分享

GO基礎知識分享

[TOC] # GO基礎知識分享 兵長:喲,最近在幹啥呢 胖sir:在看我之前的go基礎學習資料呢,回顧一下 兵長:那給我分享一下唄,我也想回顧回顧 胖sir:用你的小手指點開你的手機,我來傳給你 兵長:你信不信我的小手指可以帶你飛整個峽谷 . . . ## go語言的基本事項 1. go run hello.go 直接執行,輸出結果(原理也是編譯後執行) 2. go build hello.go 生成可執行程式,執行可執行程式,輸出結果 3. 注意 go語言中花括號不能單獨佔一行,否則會報錯 ```go package main import "fmt" func main(){ //go語言中此處的花括號不能單獨佔一行,否則會報錯 fmt.Println("hello world") } ``` 1. go語言一條語句佔一行,如果一行需要執行多個語句 使用 **分號** 隔開 2. go語言的輸出語句有3種方式 3. 1. import "fmt" 後適用fmt.Println(x) -- 輸出 2. println(x) -- 輸出 3. fmt.Printf("%d",x) -- 格式化輸出 ## 關鍵字 下面列舉了 Go 程式碼中會使用到的 25 個關鍵字或保留字: | break | default | func | interface | select | | -------- | ----------- | ------ | --------- | ------ | | case | defer | go | map | struct | | chan | else | goto | package | switch | | const | fallthrough | if | range | type | | continue | for | import | return | var | 除了以上介紹的這些關鍵字,Go 語言還有 36 個預定義識別符號: | append | bool | byte | cap | close | complex | complex64 | complex128 | uint16 | | ------ | ------- | ------- | ------- | ------ | ------- | --------- | ---------- | ------- | | copy | false | float32 | float64 | imag | int | int8 | int16 | uint32 | | int32 | int64 | iota | len | make | new | nil | panic | uint64 | | print | println | real | recover | string | true | uint | uint8 | uintptr | ## 字串的拼接和變數的定義方式 定義變數的三種方式 1. 正常使用var定義變數 2. 使用var定義變數,但是不定義型別,通過賦初值的方式,go編譯器自動識別 3. 使用:=的方式來進行 新變數的定義,僅限於新變數 -- 適用於定義在函式內部 ```go //字串 可以使用+ 進行拼接 fmt.Println("this is my func") fmt.Println("hello ,wolrd" + "xiaozhuzhu") //定義變數 var name string="xiaomotong" var age,tail int=24,170 fmt.Println(name, age , tail) fmt.Println(name) fmt.Println(age) fmt.Println(tail) //定義變數的三種方式 //1 var a int = 1 fmt.Println(a) //2 使用var定義變數,但是不定義型別,通過賦初值的方式,go編譯器自動識別 var b = "hello" fmt.Println(b) //3 使用:=的方式來進行 新變數的定義,僅限於新變數 //:= 左側如果沒有宣告新的變數,就產生編譯錯誤 c := 20 fmt.Println(c) //c:=30 //報錯,因為c已經不是新變數的 c=30 //正確,是一個正常的賦值操作 fmt.Println(c) c,d:=40,90 //這樣是合法的 fmt.Println(c,d) ``` 因式分解的方式,僅僅適用於定義全域性變數 ```go //因式分解的方式,僅僅適用於定義全域性變數 var ( g_a int = 1 g_b,g_c int=1,2 ) ``` ## 空白符 空白識別符號 _ 也被用於拋棄值,如值 5 在:_, b = 5, 7 中被拋棄。 _ 實際上是一個只寫變數,你不能得到它的值。這樣做是因為 Go 語言中你必須使用所有被宣告的變數,但有時你並不需要使用從一個函式得到的所有返回值。 ```go //空白符 _,e := 2,3 fmt.Println(e) ``` ## const常量 - 定義const常量 ```go //定義const常量 const width,height = 10,5 var area int=width*height fmt.Println("面積為", area) //50 ``` - const常量用作列舉 ```go const( unknow = 0 man = 1 woman = 2 ) println(unknow,man,woman) //0 1 2 ``` - 常量可以用len(), cap(), unsafe.Sizeof()函式計算表示式的值。常量表達式中,函式必須是內建函式,否則編譯不過: ```go const( a = "hello" b = len(a) c = unsafe.Sizeof(a) ) println(a,b,c) //hello 5 16 ``` ## iota的用法 iota,特殊常量,可以認為是一個可以被編譯器修改的常量。 iota 在 const關鍵字出現時將被重置為 0(const 內部的第一行之前),const 中每新增一行常量宣告將使 iota 計數一次(iota 可理解為 const 語句塊中的行索引)。 iota 可以被用作列舉值: ```go //itoa的用法 const( g_a = iota g_b g_c g_d ) const( g_e = iota g_f = "hello" g_g g_h = iota g_i ) const( g_j