與c語法不同之處:
1. 引數列表中各個引數型別相同時可以只寫出最後乙個,如:add(x, y int) int
2. 型別在引數名(變數/函式)後面
3. 函式的左大括號要跟函式名同一行,否則編譯不過
4. 函式定義要先寫關鍵字func在函式開頭(函式外的每個語句都要以func、var等等關鍵字開頭)
5. 在包或者函式級別宣告變數時要用var語句
6. 函式支援多值返回,如:func swap(x, y string) (string, string)
7. 函式支援命名返回值,如func split(x int) (x, y int)
8. 初始化使用表示式時可以不用寫型別,由初始值推導出型別
9. 可以用 :=實現變數簡捷複製,不需要加var,但僅能在函式內部使用
10.fmt.printf格式化輸出:%t輸出變數型別,%q輸出帶雙引號的字串,%v輸出結構型別
11.不同型別變數的賦值需要顯示型別轉換
12.常量定義要使用const,不能使用 :=,宣告兩個const變數可以const(x=1; y=2)
13.條件控制語句不加小括號(if、for、switch等)
14.for迴圈前置、後置語句可以為空,如for sum < 1000 ,格式類似c中的while,for的迴圈條件為空時是死迴圈
15.if語句後可以加乙個便捷語句,如if v:=41; sum16.switch...case...在匹配成功的時候會停止,不需要像c那樣顯示break,沒有條件的switch語句等同於switch true,用於更清晰的表達if-then-else
18.go有指標,但沒有指標運算,通過指標訪問結構體成員時用點操作符,指標是透明的
19.通過name:語法可以只列出部分字段,其餘欄位為零值
20.由make建立slice b := make(int, 0, 5) // len(b)=0, cap(b)=5,make的引數包括長度和容量,slice的零值是nil,乙個nil的slice長度和容量都是0
21.go中若有宣告但未使用的變數時編譯會報錯,用_來做變數名就可以了
22.go中沒有類,但是可以在包內任意型別定義方法(不包括基礎型別)
24.介面型別是由一組方法定義的型別的集合,介面型別的值可以存放實現這些方法的任何值
25.本地檢視go語言官方文件,godoc -http=:8011(埠號自己指定),然後瀏覽器開啟http://localhost:8011就可以了
Golang學習筆記
如果乙個method的receiver是 t,你可以在乙個t型別的例項變數v上面呼叫這個method,而不需要 v去呼叫這個method 即不需要 v method 如果乙個method的receiver是t,你可以在乙個 t型別的變數p上呼叫這個method,而不需要 p去呼叫這個method。i...
Golang學習筆記
package main import fmt func main break default func inte ce select case defer gomap struct chan else goto package switch const fallthrough ifrange ty...
golang學習筆記
io.reader 提供了reader方法的都是reader io.reader只是inte ce,如file類就是乙個reader type定義類,具體類的方法不用在類中宣告 方法的指標傳遞,是修改內部屬性用,如果是值傳遞則不會修改物件內部屬性 其次指標傳遞減少copy duck typing,沒...