Golang編碼規範

2021-07-17 02:25:46 字數 3303 閱讀 8445

一行最長不超過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...