golang編碼規範

2021-08-27 19:54:11 字數 2896 閱讀 1911

目錄[-]

golang編碼規範

gofmt

注釋命名

控制結構

函式(必須)

錯誤處理

panic

import

縮寫引數傳遞

接受者golang編碼規範

注:此文件參考官方指南effective golang和golang code review comments進行整理,力圖與官方及社群編碼風格保持一致。

gofmt

大部分的格式問題可以通過gofmt解決,gofmt自動格式化**,保證所有的go**一致的格式。

正常情況下,採用sublime編寫go**時,外掛程式gosublilme已經呼叫gofmt對**實現了格式化。

注釋在編碼階段同步寫好變數、函式、包注釋,注釋可以通過godoc匯出生成文件。

注釋必須是完整的句子,以需要注釋的內容作為開頭,句點作為結尾。

程式中每乙個被匯出的(大寫的)名字,都應該有乙個文件注釋。

包注釋每個程式包都應該有乙個包注釋,乙個位於package子句之前的塊注釋或行注釋。

包如果有多個go檔案,只需要出現在乙個go檔案中即可。?1

23//package regexp implements a ****** library

//for regular expressions.

package regexp

可匯出型別

第一條語句應該為一條概括語句,並且使用被宣告的名字作為開頭。?1

23// compile parses a regular expression and returns, if successful, a regexp

// object that can be used to match against text.

func compile(str string) (regexp *regexp, err error)

兩個函式的介面名綜合兩個函式名?1

234type writeflusher inte***ce

三個以上函式的介面名,類似於結構體名?1

2345

type car inte***ce

混合大小寫

採用駝峰式命名?1

2mixedcaps 大寫開頭,可匯出

mixedcaps 小寫開頭,不可匯出

控制結構

ifif接受初始化語句,約定如下方式建立區域性變數?1

23if err := file.chmod(0664); err != nil

for採用短宣告建立區域性變數?1

234sum := 0

for i := 0; i < 10; i++

range

如果只需要第一項(key),就丟棄第二個:?1

2345

for key := range m

}如果只需要第二項,則把第一項置為下劃線?1

234sum := 0

for _, value := range array

return

盡早return:一旦有錯誤發生,馬上返回?1

2345

6789

10f, err := os.open(name)

if err != nil

d, err := f.stat()

if err != nil

codeusing(f, d)

函式(必須)

函式採用命名的多值返回

傳入變數和返回變數以小寫字母開頭?1

func nextint(b byte, pos int) (value, nextpos int) else

而要採用下面的方式?1

2345

if err != nil

// normal code

如果返回值需要初始化,則採用下面的方式?1

2345

6x, err := f()

if err != nil

// use x

panic

盡量不要使用panic,除非你知道你在做什麼

接受者名稱

統一採用單字母'p'而不是this,me或者self?1

23type t struct{}

func (p *t)get(){}

型別對於go初學者,接受者的型別如果不清楚,統一採用指標型?1

func (p *t)get(){}

而不是?

1func (p t)get(){}

在某些情況下,出於效能的考慮,或者型別本來就是引用型別,有一些特例

如果接收者是map,slice或者chan,不要用指標傳遞

如果接收者是含有sync.mutex或者類似同步欄位的結構體,必須使用指標傳遞避免複製?1

2345

6789

1011

1213

1415

1617

1819

2021

2223

2425

package main

import (

"sync"

)type t struct

func (t *t) lock()

/*wrong !!!

func (t t) lock()

*/func main()

如果接收者是大的結構體或者陣列,使用指標傳遞會更有效率。?1

2345

6789

1011

1213

1415

1617

18package main

import (

"fmt"

)type t struct

func (t *t) get() byte

func main()

Golang編碼規範

一行最長不超過80個字元,超過的使用換行展示,盡量保持格式優雅。注釋 在編碼階段應該同步寫好變數 函式 包的注釋,最後可以利用godoc匯出文件。注釋必須是完整的句子,句子的結尾應該用句號作為結尾 英文句號 注釋推薦用英文,可以在寫 過程中鍛鍊英文的閱讀和書寫能力。而且用英文不會出現各種編碼的問題。...

Golang編碼規範

golang編碼規範 gofmt 大部分的格式問題可以通過gofmt解決,gofmt自動格式化 保證所有的go 一致的格式。正常情況下,採用sublime編寫go 時,外掛程式gosublilme已經呼叫gofmt對 實現了格式化。注釋 在編碼階段同步寫好變數 函式 包注釋,注釋可以通過godoc匯...

php 編碼規範哪些 php編碼規範

1.php 必須以完整的形式來定界 即不要使用php 短標籤 且保證在關閉標籤後不要有任何空格。2.當乙個字串是純文字組成的時候 即不含有變數 則必須總是以單引號 作為定界符。例如 a example string 3.變數替換中的變數只允許用 變數名 的形式。例如 greeting hello n...