詳解Golang 推薦的命名規(guī)范
Golang 推薦的命名規(guī)范
很少見(jiàn)人總結(jié)一些命名規(guī)范,也可能是筆者孤陋寡聞, 作為一個(gè)兩年的golang 開(kāi)發(fā)者, 我根據(jù)很多知名的項(xiàng)目,如 moby, kubernetess 等總結(jié)了一些常見(jiàn)的命名規(guī)范。 命名規(guī)范可以使得代碼更容易與閱讀, 更少的出現(xiàn)錯(cuò)誤。
如有不同意見(jiàn)歡迎吐槽、討論。 項(xiàng)目地址
文件命名規(guī)范
由于文件跟包無(wú)任何關(guān)系, 而又避免windows大小寫(xiě)的問(wèn)題,所以推薦的明明規(guī)范如下: 文件名應(yīng)一律使用小寫(xiě), 不同單詞之間用下劃線分割, 命名應(yīng)盡可能地見(jiàn)名知意
常量命名規(guī)范
常量明明用 camelcase來(lái)命名示例如下
const todayNews = "Hello" // 如果超過(guò)了一個(gè)常量應(yīng)該用括號(hào)的方法來(lái)組織 const ( systemName = "What" sysVal = "dasdsada" )
變量命名規(guī)范
與常量命名方式一樣,變量也應(yīng)該使用駝峰的命名方式, 但注意盡量不與包名一致或者以包名開(kāi)頭
var x string x := new(string)
函數(shù)命名規(guī)范
由于Golang的特殊性(用大小寫(xiě)來(lái)控制函數(shù)的可見(jiàn)性),除特殊的性能測(cè)試與單元測(cè)試函數(shù)之外, 都應(yīng)該遵循如下原則
- 使用駝峰命名
- 如果包外不需要訪問(wèn)請(qǐng)用小寫(xiě)開(kāi)頭的函數(shù)
- 如果需要暴露出去給包外訪問(wèn)需要使用大寫(xiě)開(kāi)頭的函數(shù)名稱(chēng)
一個(gè)典型的函數(shù)命名方法如下:
// 注釋一律使用雙斜線, 對(duì)象暴露的方法
func (*fileDao) AddFile(file *model.File) bool {
result := db.NewRecord(*file)
if result {
db.Create(file)
}
return result
}
// 不需要給包外訪問(wèn)的函數(shù)如下
func removeCommaAndQuote(content string) string {
re, _ := regexp.Compile("[\\`\\,]+")
return strings.TrimSpace(re.ReplaceAllString(content, ""))
}
接口命名規(guī)范
接口命名也是要遵循駝峰方式命名, 可以用 type alias 來(lái)定義大寫(xiě)開(kāi)頭的type 給包外訪問(wèn)
type helloWorld interface {
func Hello();
}
type SayHello helloWorld
Struct命名規(guī)范
與接口命名規(guī)范類(lèi)似
receiver 命名規(guī)范
golang 中存在receiver 的概念 receiver 名稱(chēng)應(yīng)該盡量保持一致, 避免this, super,等其他語(yǔ)言的一些語(yǔ)義關(guān)鍵字如下
type A struct{}
func (a *A) methodA() {
}
func (a *A) methodB() {
a.methodA()
}
注釋規(guī)范
注釋?xiě)?yīng)一律使用雙斜線
其他
格式化, 用tab不是空格, 可以與go fmt 兼容
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Go語(yǔ)言中WaitGroup并發(fā)同步的實(shí)現(xiàn)
本文主要介紹了Go語(yǔ)言中WaitGroup并發(fā)同步的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2026-04-04
一文帶你了解Go語(yǔ)言標(biāo)準(zhǔn)庫(kù)math和rand的常用函數(shù)
這篇文章主要為大家詳細(xì)介紹了Go語(yǔ)言標(biāo)準(zhǔn)庫(kù)math和rand中的常用函數(shù),文中的示例代碼講解詳細(xì), 對(duì)我們學(xué)習(xí)Go語(yǔ)言有一定的幫助,感興趣的小伙伴可以了解一下2022-12-12
Go多線程中數(shù)據(jù)不一致問(wèn)題的解決方案(sync鎖機(jī)制)
在Go語(yǔ)言的并發(fā)編程中,如何確保多個(gè)goroutine安全地訪問(wèn)共享資源是一個(gè)關(guān)鍵問(wèn)題,Go語(yǔ)言提供了sync包,其中包含了多種同步原語(yǔ),用于解決并發(fā)編程中的同步問(wèn)題,本文將詳細(xì)介紹sync包中的鎖機(jī)制,需要的朋友可以參考下2024-10-10
線上golang grpc服務(wù)資源泄露問(wèn)題排查
這篇文章主要介紹了線上golang grpc服務(wù)資源泄露問(wèn)題排查,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12
Golang Gorm實(shí)現(xiàn)自定義多態(tài)模型關(guān)聯(lián)查詢(xún)
GORM 是一個(gè)流行的開(kāi)源 ORM (Object-Relational Mapping) 庫(kù),專(zhuān)為 Go 語(yǔ)言設(shè)計(jì),它簡(jiǎn)化了與 SQL 數(shù)據(jù)庫(kù)的交互,GORM 封裝了數(shù)據(jù)庫(kù)操作,使得開(kāi)發(fā)者能夠通過(guò)簡(jiǎn)單的鏈?zhǔn)秸{(diào)用來(lái)執(zhí)行 CRUD,本文給大家介紹了Golang Gorm實(shí)現(xiàn)自定義多態(tài)模型關(guān)聯(lián)查詢(xún),需要的朋友可以參考下2024-11-11
Go中并發(fā)控制的實(shí)現(xiàn)方式總結(jié)
在Go實(shí)際開(kāi)發(fā)中,并發(fā)安全是老生常談的事情,在并發(fā)下,goroutine之間的存在數(shù)據(jù)資源等方面的競(jìng)爭(zhēng),為了保證數(shù)據(jù)一致性、防止死鎖等問(wèn)題的出現(xiàn),在并發(fā)中需要使用一些方式來(lái)實(shí)現(xiàn)并發(fā)控制,本文給大家總結(jié)了幾種實(shí)現(xiàn)方式,需要的朋友可以參考下2023-12-12
一文教你學(xué)會(huì)Go中singleflight的使用
緩存在項(xiàng)目中使用應(yīng)該是非常頻繁的,提到緩存只要了解過(guò)?singleflight?,基本都會(huì)用于緩存實(shí)現(xiàn)的一部分吧,下面就跟隨小編一起來(lái)學(xué)習(xí)一下singleflight的使用吧2024-02-02
golang實(shí)現(xiàn)并發(fā)數(shù)控制的方法
下面小編就為大家分享一篇golang實(shí)現(xiàn)并發(fā)數(shù)控制的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-12-12
使用Go語(yǔ)言編寫(xiě)簡(jiǎn)潔代碼的最佳實(shí)踐
簡(jiǎn)潔的代碼對(duì)于創(chuàng)建可維護(hù)、可閱讀和高效的軟件至關(guān)重要,Go 是一種強(qiáng)調(diào)簡(jiǎn)單和代碼整潔的語(yǔ)言,在本文中,我們將結(jié)合代碼示例,探討編寫(xiě)簡(jiǎn)潔 Go 代碼的最佳實(shí)踐,需要的朋友可以參考下2023-09-09

