天天看點

變量命名規則_Go中的命名規範

變量命名規則_Go中的命名規範
1.Go是一門區分大小寫的語言

命名規則涉及變量、常量、全局函數、結構、接口、方法等的命名。 Go語言從文法層面進行了以下限定:任何需要對外暴露的名字必須以大寫字母開頭,不需要對外暴露的則應該以小寫字母開頭。

當命名(包括常量、變量、類型、函數名、結構字段等等)以一個大寫字母開頭,如:SetupRouter,那麼使用這種形式的辨別符的對象就可以被外部包的代碼所使用(用戶端程式需要先導入這個包),這被稱為導出(像面向對象語言中的 public);

命名如果以小寫字母開頭,則對包外是不可見的,但是他們在整個包的内部是可見并且可用的(像面向對象語言中的 private )。

2. 包名稱

最好保持package的名字和目錄保持一緻,盡量采取有意義的包名,簡短,有意義,盡量和标準庫不要沖突。包名應該為小寫單詞,盡量不要使用下劃線或者混合大小寫。

package controller
           
3. 檔案命名

盡量采取有意義的檔案名,簡短,有意義,應該為小寫單詞,使用下劃線分隔各個單詞。

user_controller.go
           
4. 結構體命名

采用駝峰命名法,首字母根據通路控制大寫或者小寫。

type UserInfo struct {
	Name      string `gorm:"type:varchar(20);not null"`
	Telephone string `gorm:"type:varchar(11);not null;unique"`
	Password  string `gorm:"size:255;not null"`
}
           
5. 接口命名

命名規則基本和上面的結構體類型類似

單個函數的結構名以 “er” 作為字尾,例如 Reader , Writer 。

package fmt
// Stringer is implemented by any value that has a String method,
// which defines the ``native'' format for that value.
// The String method is used to print values passed as an operand
// to any format that accepts a string or to an unformatted printer
// such as Print.
type Stringer interface {
	String() string
}
           
6. 變量命名

和結構體類似,變量名稱一般遵循駝峰法,首字母根據通路控制原則大寫或者小寫,但遇到特有名詞時,需要遵循以下規則:

如果變量為私有,且特有名詞為首個單詞,則使用小寫,如 appService;

若變量類型為 bool 類型,則名稱應以 Has, Is, Can 或 Allow 開頭。

var isExist bool
var hasConflict bool
var canManage bool
           
7.方法的接收器命名

下面的代碼裡那個附加的參數p,叫做方法的接收器(receiver)

在Go語言中,我們并不會像其它語言那樣用this或者self作為接收器;我們可以任意的選擇接收器的名字。由于接收器的名字經常會被使用到,是以保持其在方法間傳遞時的一緻性和簡短性是不錯的主意。這裡的建議是可以使用其類型的第一個字母,比如這裡使用了Point的首字母p。

type Point struct{ X, Y float64 }

func (p Point) Distance(q Point) float64 {
    return math.Hypot(q.X-p.X, q.Y-p.Y)
}