Go語言中的函數名、變量名、常量名、類型名、語句標號和包名等所有的命名,都遵循一個簡單的命名規則:一個名字必須以一個字母(Unicode字母)或下划線開頭,后面可以跟任意數量的字母、數字或下划線。大寫字母和小寫字母是不同的:heapSort和Heapsort是兩個不同的名字。
Go語言中二十五個關鍵字和三十幾個預定義標識符,關鍵字不能用於自定義名字,只能在特定語法結構中使用;預定義標識符主要應對內建常量、類型和函數。這些內部預先定義的標識符並不是關鍵字,你可以在定義中重新使用它們。在一些特殊的場景中重新定義它們也是有意義的,但是也要注意避免過度而引起語義混亂。
關鍵字:
break //退出當前循環或者switch語句等 continue //跳過本次循環 return //返回 default //選擇結構默認項(switch、select) switch //選擇結構 case //選擇結構標簽 fallthrough //用於標明執行完當前 case 語句之后按順序執行下一個case語句 if //選擇結構 else //選擇結構 goto //跳轉語句 select //channel struct //定義結構體 var //定義變量 type //定義類型 map //map類型 chan //定義channel const //常量 for //循環 range //從引用類型中遍歷元素 func //定義函數 interface //定義接口 defer //延遲執行內容,可用於最后清理資源等 go //並發執行 package //包 import //導入包
預定義標識符:
內建常量: true false iota nil 內建類型: int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptr float32 float64 complex128 complex64 bool byte rune
string error 內建函數: make len cap new append copy close delete complex real imag panic recover
名字的長度沒有邏輯限制,但是Go語言的風格是盡量使用短小的名字,對於局部變量尤其是這樣。通常來說,如果一個名字的作用域比較大,生命周期也比較長,那么用長的名字將會更有意義。
在習慣上,Go語言程序員推薦使用駝峰式命名,當名字有幾個單詞組成的時優先使用大小寫分隔,而不是優先用下划線分隔。因此,在標准庫有QuoteRuneToASCII和parseRequestLine這樣的函數命名,但是一般不會用quote_rune_to_ASCII和parse_request_line這樣的命名。而像ASCII和HTML這樣的縮略詞則避免使用大小寫混合的寫法,它們可能被稱為htmlEscape、HTMLEscape或escapeHTML,但不會是escapeHtml。