W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
原文鏈接:https://gopl-zh.github.io/ch2/ch2-01.html
Go語言中的函數(shù)名、變量名、常量名、類型名、語句標(biāo)號和包名等所有的命名,都遵循一個簡單的命名規(guī)則:一個名字必須以一個字母(Unicode字母)或下劃線開頭,后面可以跟任意數(shù)量的字母、數(shù)字或下劃線。大寫字母和小寫字母是不同的:heapSort和Heapsort是兩個不同的名字。
Go語言中類似if和switch的關(guān)鍵字有25個;關(guān)鍵字不能用于自定義名字,只能在特定語法結(jié)構(gòu)中使用。
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
此外,還有大約30多個預(yù)定義的名字,比如int和true等,主要對應(yīng)內(nèi)建的常量、類型和函數(shù)。
內(nèi)建常量: true false iota nil
內(nèi)建類型: int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr
float32 float64 complex128 complex64
bool byte rune string error
內(nèi)建函數(shù): make len cap new append copy close delete
complex real imag
panic recover
這些內(nèi)部預(yù)先定義的名字并不是關(guān)鍵字,你可以在定義中重新使用它們。在一些特殊的場景中重新定義它們也是有意義的,但是也要注意避免過度而引起語義混亂。
如果一個名字是在函數(shù)內(nèi)部定義,那么它就只在函數(shù)內(nèi)部有效。如果是在函數(shù)外部定義,那么將在當(dāng)前包的所有文件中都可以訪問。名字的開頭字母的大小寫決定了名字在包外的可見性。如果一個名字是大寫字母開頭的(譯注:必須是在函數(shù)外部定義的包級名字;包級函數(shù)名本身也是包級名字),那么它將是導(dǎo)出的,也就是說可以被外部的包訪問,例如fmt包的Printf函數(shù)就是導(dǎo)出的,可以在fmt包外部訪問。包本身的名字一般總是用小寫字母。
名字的長度沒有邏輯限制,但是Go語言的風(fēng)格是盡量使用短小的名字,對于局部變量尤其是這樣;你會經(jīng)常看到i之類的短名字,而不是冗長的theLoopIndex命名。通常來說,如果一個名字的作用域比較大,生命周期也比較長,那么用長的名字將會更有意義。
在習(xí)慣上,Go語言程序員推薦使用 駝峰式 命名,當(dāng)名字由幾個單詞組成時優(yōu)先使用大小寫分隔,而不是優(yōu)先用下劃線分隔。因此,在標(biāo)準(zhǔn)庫有QuoteRuneToASCII和parseRequestLine這樣的函數(shù)命名,但是一般不會用quote_rune_to_ASCII和parse_request_line這樣的命名。而像ASCII和HTML這樣的縮略詞則避免使用大小寫混合的寫法,它們可能被稱為htmlEscape、HTMLEscape或escapeHTML,但不會是escapeHtml。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: