婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > golang語言編碼規范的實現

golang語言編碼規范的實現

熱門標簽:福州鐵通自動外呼系統 烏魯木齊人工電銷機器人系統 賺地圖標注的錢犯法嗎 澳門防封電銷卡 廣東語音外呼系統供應商 濮陽自動外呼系統代理 地圖標注測試 長沙ai機器人電銷 智能電銷機器人營銷

本規范旨在為日常Go項目開發提供一個代碼的規范指導,方便團隊形成一個統一的代碼風格,提高代碼的可讀性,規范性和統一性。本規范將從命名規范,注釋規范,代碼風格和 Go 語言提供的常用的工具這幾個方面做一個說明。該規范參考了 go 語言官方代碼的風格制定。

一、 命名規范

命名是代碼規范中很重要的一部分,統一的命名規則有利于提高的代碼的可讀性,好的命名僅僅通過命名就可以獲取到足夠多的信息。

Go在命名時以字母a到Z或a到Z或下劃線開頭,后面跟著零或更多的字母、下劃線和數字(0到9)。Go不允許在命名時中使用@、$和%等標點符號。Go是一種區分大小寫的編程語言。因此,Manpower和manpower是兩個不同的命名。

當命名(包括常量、變量、類型、函數名、結構字段等等)以一個大寫字母開頭,如:Group1,那么使用這種形式的標識符的對象就可以被外部包的代碼所使用(客戶端程序需要先導入這個包),這被稱為導出(像面向對象語言中的 public);
命名如果以小寫字母開頭,則對包外是不可見的,但是他們在整個包的內部是可見并且可用的(像面向對象語言中的 private )

1、包命名:package

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

package demo
package main

2、 文件命名

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

my_test.go

3、 結構體命名

采用駝峰命名法,首字母根據訪問控制大寫或者小寫
struct 申明和初始化格式采用多行,例如下面:

// 多行申明
type User struct{
  Username string
  Email   string
}

// 多行初始化
u := User{
  Username: "astaxie",
  Email:  "astaxie@gmail.com",
}

4、 接口命名

命名規則基本和上面的結構體類型
單個函數的結構名以 “er” 作為后綴,例如 Reader , Writer 。

type Reader interface {
    Read(p []byte) (n int, err error)
}

5、變量命名

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

  • 如果變量為私有,且特有名詞為首個單詞,則使用小寫,如 apiClient
  • 其它情況都應當使用該名詞原有的寫法,如 APIClient、repoID、UserID
  • 錯誤示例:UrlArray,應該寫成 urlArray 或者 URLArray

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

var isExist bool
var hasConflict bool
var canManage bool
var allowGitHook bool

6、常量命名

常量均需使用全部大寫字母組成,并使用下劃線分詞

const APP_VER = "1.0"

如果是枚舉類型的常量,需要先創建相應類型:

type Scheme string

const (
  HTTP Scheme = "http"
  HTTPS Scheme = "https"
)

7、 關鍵字

下面的列表顯示了Go中的保留字。這些保留字不能用作常量或變量或任何其他標識符名稱。

二、注釋

Go提供C風格的/* */塊注釋和C ++風格的//行注釋。行注釋是常態;塊注釋主要顯示為包注釋,但在表達式中很有用或禁用大量代碼。

  • 單行注釋是最常見的注釋形式,你可以在任何地方使用以 // 開頭的單行注釋
  • 多行注釋也叫塊注釋,均已以 /* 開頭,并以 */ 結尾,且不可以嵌套使用,多行注釋一般用于包的文檔描述或注釋成塊的代碼片段

go 語言自帶的 godoc 工具可以根據注釋生成文檔,生成可以自動生成對應的網站( golang.org 就是使用 godoc 工具直接生成的),注釋的質量決定了生成的文檔的質量。每個包都應該有一個包注釋,在package子句之前有一個塊注釋。對于多文件包,包注釋只需要存在于一個文件中,任何一個都可以。包評論應該介紹包,并提供與整個包相關的信息。它將首先出現在godoc頁面上,并應設置下面的詳細文檔。

詳細的如何寫注釋可以
參考:http://golang.org/doc/effective_go.html#commentary

1、包注釋

每個包都應該有一個包注釋,一個位于package子句之前的塊注釋或行注釋。包如果有多個go文件,只需要出現在一個go文件中(一般是和包同名的文件)即可。 包注釋應該包含下面基本信息(請嚴格按照這個順序,簡介,創建人,創建時間):

  • 包的基本簡介(包名,簡介)
  • 創建者,格式: 創建人: rtx 名
  • 創建時間,格式:創建時間: yyyyMMdd

例如 util 包的注釋示例如下

// util 包, 該包包含了項目共用的一些常量,封裝了項目中一些共用函數。
// 創建人: hanru
// 創建時間: 20190419

2、結構(接口)注釋

每個自定義的結構體或者接口都應該有注釋說明,該注釋對結構進行簡要介紹,放在結構體定義的前一行,格式為: 結構體名, 結構體說明。同時結構體內的每個成員變量都要有說明,該說明放在成員變量的后面(注意對齊),實例如下:

// User , 用戶對象,定義了用戶的基礎信息
type User struct{
  Username string // 用戶名
  Email   string // 郵箱
}

3、函數(方法)注釋

每個函數,或者方法(結構體或者接口下的函數稱為方法)都應該有注釋說明,函數的注釋應該包括三個方面(嚴格按照此順序撰寫):

  • 簡要說明,格式說明:以函數名開頭,“,”分隔說明部分
  • 參數列表:每行一個參數,參數名開頭,“,”分隔說明部分
  • 返回值: 每行一個返回值

示例如下:

// NewtAttrModel , 屬性數據層操作類的工廠方法
// 參數:
//   ctx : 上下文信息
// 返回值:
//   屬性操作類指針
func NewAttrModel(ctx *common.Context) *AttrModel {
}

4、代碼邏輯注釋

對于一些關鍵位置的代碼邏輯,或者局部較為復雜的邏輯,需要有相應的邏輯說明,方便其他開發者閱讀該段代碼,實例如下:

// 從 Redis 中批量讀取屬性,對于沒有讀取到的 id , 記錄到一個數組里面,準備從 DB 中讀取
xxxxx
xxxxxxx
xxxxxxx

5、注釋風格

統一使用中文注釋,對于中英文字符之間嚴格使用空格分隔, 這個不僅僅是中文和英文之間,英文和中文標點之間也都要使用空格分隔,例如:

// 從 Redis 中批量讀取屬性,對于沒有讀取到的 id , 記錄到一個數組里面,準備從 DB 中讀取

上面 Redis 、 id 、 DB 和其他中文字符之間都是用了空格分隔。

  • 建議全部使用單行注釋
  • 和代碼的規范一樣,單行注釋不要過長,禁止超過 120 字符。

三、代碼風格

1、縮進和折行

  • 縮進直接使用 gofmt 工具格式化即可(gofmt 是使用 tab 縮進的);
  • 折行方面,一行最長不超過120個字符,超過的請使用換行展示,盡量保持格式優雅。

我們使用Goland開發工具,可以直接使用快捷鍵:ctrl+alt+L,即可。

2、語句的結尾

Go語言中是不需要類似于Java需要冒號結尾,默認一行就是一條數據

如果你打算將多個語句寫在同一行,它們則必須使用 ;

3、括號和空格

括號和空格方面,也可以直接使用 gofmt 工具格式化(go 會強制左大括號不換行,換行會報語法錯誤),所有的運算符和操作數之間要留空格。

// 正確的方式
if a > 0 {

} 

// 錯誤的方式
if a>0 // a ,0 和 > 之間應該空格
{    // 左大括號不可以換行,會報語法錯誤

}

4、import 規范
import在多行的情況下,goimports會自動幫你格式化,但是我們這里還是規范一下import的一些規范,如果你在一個文件里面

引入了一個package,還是建議采用如下格式:

import (
  "fmt"
)

如果你的包引入了三種類型的包,標準庫包,程序內部包,第三方包,建議采用如下方式進行組織你的包:

import (
  "encoding/json"
  "strings"

  "myproject/models"
  "myproject/controller"
  "myproject/utils"

  "github.com/astaxie/beego"
  "github.com/go-sql-driver/mysql"
)  

有順序的引入包,不同的類型采用空格分離,第一種實標準庫,第二是項目包,第三是第三方包。

在項目中不要使用相對路徑引入包:

// 這是不好的導入
import “../net”

// 這是正確的做法
import “github.com/repo/proj/src/net”

但是如果是引入本項目中的其他包,最好使用相對路徑。

5、錯誤處理

錯誤處理的原則就是不能丟棄任何有返回err的調用,不要使用 _ 丟棄,必須全部處理。接收到錯誤,要么返回err,或者使用log記錄下來
盡早return:一旦有錯誤發生,馬上返回
盡量不要使用panic,除非你知道你在做什么
錯誤描述如果是英文必須為小寫,不需要標點結尾
采用獨立的錯誤流進行處理

// 錯誤寫法
if err != nil {
  // error handling
} else {
  // normal code
}

// 正確寫法
if err != nil {
  // error handling
  return // or continue, etc.
}
// normal code

6、測試

單元測試文件名命名規范為 example_test.go
測試用例的函數名稱必須以 Test 開頭,例如:TestExample
每個重要的函數都要首先編寫測試用例,測試用例和正規代碼一起提交方便進行回歸測試

四、常用工具

上面提到了很過規范, go 語言本身在代碼規范性這方面也做了很多努力,很多限制都是強制語法要求,例如左大括號不換行,引用的包或者定義的變量不使用會報錯,此外 go 還是提供了很多好用的工具幫助我們進行代碼的規范,

gofmt
大部分的格式問題可以通過gofmt解決, gofmt 自動格式化代碼,保證所有的 go 代碼與官方推薦的格式保持一致,于是所有格式有關問題,都以 gofmt 的結果為準。

goimport
我們強烈建議使用 goimport ,該工具在 gofmt 的基礎上增加了自動刪除和引入包.

go get golang.org/x/tools/cmd/goimports

go vet
vet工具可以幫我們靜態分析我們的源碼存在的各種問題,例如多余的代碼,提前return的邏輯,struct的tag是否符合標準等。

go get golang.org/x/tools/cmd/vet

使用如下:

go vet .

到此這篇關于golang語言編碼規范的實現的文章就介紹到這了,更多相關golang語言編碼規范內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 一文了解Go語言中編碼規范的使用

標簽:阿克蘇 德州 廣西 西雙版納 調研邀請 貴陽 太原 慶陽

巨人網絡通訊聲明:本文標題《golang語言編碼規范的實現》,本文關鍵詞  golang,語言,編碼,規范,的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《golang語言編碼規范的實現》相關的同類信息!
  • 本頁收集關于golang語言編碼規范的實現的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲v精品v日韩v欧美v专区| 国产成人精品三级麻豆| 91日韩一区二区三区| 蜜桃av噜噜一区| 亚洲黄色片在线观看| 国产精品入口麻豆原神| 日韩欧美二区三区| 欧美日韩久久一区二区| ww亚洲ww在线观看国产| 美女一区二区在线观看| 亚洲一区二区在线免费观看视频| 久久麻豆一区二区| 精品久久久久久无| 欧美一卡2卡3卡4卡| 欧美日韩亚洲综合一区 | 日韩av在线发布| 亚洲午夜电影在线| 一区二区三区在线视频播放| 亚洲欧美色一区| 亚洲婷婷在线视频| 国产精品久久久久aaaa樱花| 国产精品免费av| 日韩一区在线播放| 亚洲午夜影视影院在线观看| 亚洲国产精品久久不卡毛片| 亚洲伊人伊色伊影伊综合网| 亚洲国产精品欧美一二99| 爽好久久久欧美精品| 久久电影网电视剧免费观看| 国产精品中文有码| 欧美撒尿777hd撒尿| 欧美男女性生活在线直播观看| 91 com成人网| 久久久久久久久免费| 国产精品初高中害羞小美女文 | 亚洲18色成人| 蜜桃免费网站一区二区三区| 国产精品一区二区在线看| 久久嫩草精品久久久精品| 国产欧美一区二区精品性| 国产无人区一区二区三区| 久久免费的精品国产v∧| 国产欧美综合在线观看第十页| 国产精品午夜在线观看| 亚洲免费av观看| 日韩黄色小视频| 韩国av一区二区| 99re视频精品| 欧美一区二区福利视频| 国产日韩欧美a| 一区二区高清免费观看影视大全| 日本欧美一区二区三区乱码| 国产精品羞羞答答xxdd| 色天使色偷偷av一区二区| 色哟哟一区二区三区| 色噜噜偷拍精品综合在线| 欧美日韩国产小视频在线观看| 欧美一级xxx| 国产精品国产三级国产普通话三级| 亚洲精品久久7777| 极品瑜伽女神91| 久久奇米777| 一区二区三区不卡视频在线观看 | 亚洲蜜桃精久久久久久久| 久久成人综合网| 日本电影亚洲天堂一区| 亚洲精品一区二区三区精华液| 亚洲精品免费看| 另类综合日韩欧美亚洲| 欧美羞羞免费网站| 国产精品免费av| 国产一区三区三区| 91麻豆精品久久久久蜜臀| 亚洲裸体xxx| 国产91在线|亚洲| 日韩视频永久免费| 视频一区中文字幕国产| 91美女片黄在线观看91美女| 日韩精品一区二区三区视频| 亚洲一区二区三区中文字幕 | 亚洲欧美国产毛片在线| 黄一区二区三区| 日韩一区二区免费电影| 五月婷婷久久综合| 欧美日韩精品是欧美日韩精品| 18欧美乱大交hd1984| www.66久久| 日韩毛片一二三区| 波多野结衣91| 综合色天天鬼久久鬼色| 成人免费视频一区二区| 欧美激情中文字幕| 风间由美中文字幕在线看视频国产欧美| 精品精品国产高清一毛片一天堂| 青青草原综合久久大伊人精品| 久久久久久亚洲综合影院红桃| 美女视频黄 久久| 日韩美女一区二区三区四区| 久久成人免费网站| 精品嫩草影院久久| 国产精品一区在线| 国产三级一区二区| av日韩在线网站| 亚洲三级在线观看| 欧美在线免费播放| 日韩av电影免费观看高清完整版 | 不卡大黄网站免费看| 国产精品久久久久久久浪潮网站| 国产成人av电影免费在线观看| 中文字幕中文字幕一区| 在线观看亚洲专区| 视频一区免费在线观看| 日韩三区在线观看| 国产成人精品一区二| 国产精品传媒入口麻豆| 欧美在线影院一区二区| 免费xxxx性欧美18vr| 久久一夜天堂av一区二区三区| 国产精品1区二区.| 亚洲主播在线播放| 日韩一卡二卡三卡国产欧美| 国产乱淫av一区二区三区| 国产午夜三级一区二区三| 一区二区三区在线免费观看| 久久久精品欧美丰满| 国产精品全国免费观看高清| 日本一区二区电影| 国产精品久久久久久久久果冻传媒 | 亚洲色图制服丝袜| 色婷婷亚洲精品| 青青草视频一区| 久久久不卡网国产精品一区| 91天堂素人约啪| 男女性色大片免费观看一区二区 | 国产精品麻豆久久久| 欧美午夜在线一二页| 国模无码大尺度一区二区三区| 亚洲欧美国产77777| 欧美成人精品3d动漫h| 日韩欧美中文字幕精品| 99re这里只有精品6| 久久成人免费电影| 亚洲小说春色综合另类电影| 国产欧美一区二区精品性| 欧美婷婷六月丁香综合色| 大白屁股一区二区视频| 91麻豆精品国产91| 久久精品视频一区二区| 国产精品一区二区x88av| 亚洲免费电影在线| 久久久久久久久岛国免费| 欧美专区在线观看一区| 国产馆精品极品| 美女脱光内衣内裤视频久久网站| 亚洲视频免费观看| 久久欧美中文字幕| 日韩免费观看高清完整版| 欧美日韩中文字幕一区二区| 成人h动漫精品| 久久精品国产精品亚洲红杏| 亚洲成人动漫在线观看| 亚洲人成精品久久久久久 | 制服视频三区第一页精品| 色婷婷精品久久二区二区蜜臀av| 韩国欧美一区二区| 美女高潮久久久| 奇米777欧美一区二区| 亚洲国产sm捆绑调教视频| 亚洲激情在线激情| 亚洲天堂久久久久久久| 国产精品第四页| 亚洲视频在线一区| 亚洲另类在线制服丝袜| 亚洲精品大片www| 一区二区三区中文在线观看| 亚洲欧美日韩在线| 亚洲精品久久久蜜桃| 伊人夜夜躁av伊人久久| 亚洲高清在线精品| 亚洲图片有声小说| 首页国产丝袜综合| 美女视频一区在线观看| 国产在线精品免费av| 国产成人av自拍| 99视频在线精品| 色94色欧美sute亚洲线路一ni | 精品成人a区在线观看| 欧美成va人片在线观看| 精品乱人伦一区二区三区| 久久久不卡网国产精品二区| 欧美国产精品中文字幕| 亚洲免费在线看| 丝袜亚洲另类丝袜在线| 日本亚洲免费观看| 国产乱码字幕精品高清av | 欧美激情一区二区三区四区| 国产精品理伦片| 亚洲国产中文字幕在线视频综合| 成人动漫av在线| 色婷婷久久久亚洲一区二区三区|