一行最長不超過80個字元,超過的使用換行展示,盡量保持格式優雅。
* 注釋
在編碼階段應該同步寫好變數、函式、包的注釋,最後可以利用godoc匯出文件。注釋必須是完整的句子,句子的結尾應該用句號作為結尾(英文句號)。注釋推薦用英文,可以在寫**過程中鍛鍊英文的閱讀和書寫能力。而且用英文不會出現各種編碼的問題。
每個包都應該有乙個包注釋,乙個位於package子句之前的塊注釋或行注釋。包如果有多個go檔案,只需要出現在乙個go檔案中即可。
// ping包實現了常用的ping相關的函式
package ping
匯出函式注釋,第一條語句應該為一條概括語句,並且使用被宣告的名字作為開頭。
// 求a和b的和,返回sum。
func myfunction(sum int) (a, b int)
兩個函式的介面名綜合兩個函式名
type
writeflusher inte***ce
三個以上函式的介面名,抽象這個介面的功能,類似於結構體名
type
car inte***ce
常量均需使用全部大寫字母組成,並使用下劃線分詞:
如果是列舉型別的常量,需要先建立相應型別:
)如果模組的功能較為複雜、常量名稱容易混淆的情況下,為了更好地區分列舉型別,可以使用完整的字首:
type pullrequeststatus int
const (
pull_request_status_conflict pullrequeststatus = iota
pull_request_status_checking
pull_request_status_mergeable
)
var i***ist bool
var hasconflict bool
var canmanage bool
var allowgithook bool
下面列舉了一些常見的特有名詞:
struct申明和初始化格式採用多行:
定義如下:
type
user struct
初始化如下:
u := user
if
err := file.chmod(0664); err != nil
for
採用短宣告建立區域性變數
sum := 0
fori := 0; i
< 10; i++
return
盡早return:一旦有錯誤發生,馬上返回
f, err := os.open(name)
iferr != nil
d, err := f.stat()
iferr != nil
codeusing(f, d)
不要採用下面的處理錯誤寫法
if err != nil else
採用下面的寫法
if err != nil
// normal code
使用函式的返回值時,則採用下面的方式
x, err := f()
if err != nil
// use x
盡量不要使用panic,除非你知道你在做什麼
對import的包進行分組管理,用換行符分割,而且標準庫作為分組的第一組。如果你的包引入了三種型別的包,標準庫包,程式內部包,第三方包,建議採用如下方式進行組織你的包
)在專案中不要使用相對路徑引入包:
// 錯誤示例
import 「../net」
// 正確的做法
import 「github.com/repo/proj/src/net」
goimports會自動幫你格式化
單元測試
單元測試檔名命名規範為 example_test.go
測試用例的函式名稱必須以 test 開頭,例如:testexample
Golang編碼規範
golang編碼規範 gofmt 大部分的格式問題可以通過gofmt解決,gofmt自動格式化 保證所有的go 一致的格式。正常情況下,採用sublime編寫go 時,外掛程式gosublilme已經呼叫gofmt對 實現了格式化。注釋 在編碼階段同步寫好變數 函式 包注釋,注釋可以通過godoc匯...
golang編碼規範
目錄 golang編碼規範 gofmt 注釋命名 控制結構 函式 必須 錯誤處理 panic import 縮寫引數傳遞 接受者golang編碼規範 注 此文件參考官方指南effective golang和golang code review comments進行整理,力圖與官方及社群編碼風格保持一...
php 編碼規範哪些 php編碼規範
1.php 必須以完整的形式來定界 即不要使用php 短標籤 且保證在關閉標籤後不要有任何空格。2.當乙個字串是純文字組成的時候 即不含有變數 則必須總是以單引號 作為定界符。例如 a example string 3.變數替換中的變數只允許用 變數名 的形式。例如 greeting hello n...