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

主頁 > 知識庫 > 一文了解Go語言中編碼規范的使用

一文了解Go語言中編碼規范的使用

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

每個語言都有自己特色的編碼規范,學習該語言的命名規范,能讓你寫出來的代碼更加易讀,更加不容易出現一些低級錯誤。

本文根據個人編碼習慣以及網絡上的一些文章,整理了一些大家能用上的編碼規范,可能是一些主流方案,但不代表官方,這一點先聲明一下。

1. 文件命名

由于 Windows平臺文件名不區分大小寫,所以文件名應一律使用小寫

不同單詞之間用下劃線分詞,不要使用駝峰式命名

如果是測試文件,可以以 _test.go 結尾

文件若具有平臺特性,應以 文件名_平臺.go 命名,比如 utils_ windows.go,utils_linux.go,可用的平臺有:windows, unix, posix, plan9, darwin, bsd, linux, freebsd, nacl, netbsd, openbsd, solaris, dragonfly, bsd, notbsd, android,stubs

一般情況下應用的主入口應為 main.go,或者以應用的全小寫形式命名。比如MyBlog 的入口可以為 myblog.go

2. 常量命名

目前在網絡上可以看到主要有兩種風格的寫法

第一種是駝峰命名法,比如 appVersion

第二種使用全大寫且用下劃線分詞,比如 APP_VERSION

這兩種風格,沒有孰好孰弱,可自由選取,我個人更傾向于使用第二種,主要是能一眼與變量區分開來。

如果要定義多個變量,請使用 括號 來組織。

const (
  APP_VERSION = "0.1.0"
 CONF_PATH = "/etc/xx.conf"
)

3. 變量命名

和常量不同,變量的命名,開發者們的喜好就比較一致了,統一使用 駝峰命名法

  1. 在相對簡單的環境(對象數量少、針對性強)中,可以將完整單詞簡寫為單個字母,例如:user寫為u
  2. 若該變量為 bool 類型,則名稱應以 Has, Is, Can 或 Allow 開頭。例如:isExist ,hasConflict 。
  3. 其他一般情況下首單詞全小寫,其后各單詞首字母大寫。例如:numShips 和 startDate 。
  4. 若變量中有特有名詞(以下列出),且變量為私有,則首單詞還是使用全小寫,如 apiClient。
  5. 若變量中有特有名詞(以下列出),但變量不是私有,那首單詞就要變成全大寫。例如:APIClient,URLString

這里列舉了一些常見的特有名詞:

// A GonicMapper that contains a list of common initialisms taken from golang/lint
var LintGonicMapper = GonicMapper{
  "API":  true,
  "ASCII": true,
  "CPU":  true,
  "CSS":  true,
  "DNS":  true,
  "EOF":  true,
  "GUID": true,
  "HTML": true,
  "HTTP": true,
  "HTTPS": true,
  "ID":  true,
  "IP":  true,
  "JSON": true,
  "LHS":  true,
  "QPS":  true,
  "RAM":  true,
  "RHS":  true,
  "RPC":  true,
  "SLA":  true,
  "SMTP": true,
  "SSH":  true,
  "TLS":  true,
  "TTL":  true,
  "UI":  true,
  "UID":  true,
  "UUID": true,
  "URI":  true,
  "URL":  true,
  "UTF8": true,
  "VM":  true,
  "XML":  true,
  "XSRF": true,
  "XSS":  true,
}

4. 函數命名

  1. 函數名還是使用 駝峰命名法
  2. 但是有一點需要注意,在 Golang 中是用大小寫來控制函數的可見性,因此當你需要在包外訪問,請使用 大寫字母開頭
  3. 當你不需要在包外訪問,請使用小寫字母開頭

另外,函數內部的參數的排列順序也有幾點原則

  1. 參數的重要程度越高,應排在越前面
  2. 簡單的類型應優先復雜類型
  3. 盡可能將同種類型的參數放在相鄰位置,則只需寫一次類型

5. 接口命名

使用駝峰命名法,可以用 type alias 來定義大寫開頭的 type 給包外訪問。

type helloWorld interface {
  func Hello();
}

type SayHello helloWorld

當你的接口只有一個函數時,接口名通常會以 er 為后綴

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

5. 注釋規范

注釋分為

5.1 包注釋

位于 package 之前,如果一個包有多個文件,只需要在一個文件中編寫即可
如果你想在每個文件中的頭部加上注釋,需要在版權注釋和 Package前面加一個空行,否則版權注釋會作為Package的注釋。

// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package net

如果是特別復雜的包,可單獨創建 doc.go 文件說明

5.2 代碼注釋

用于解釋代碼邏輯,可以有兩種寫法

單行注釋使用 // ,多行注釋使用 /* comment */

// 單行注釋

/*
多
行
注
釋
*/

另外,對于代碼注釋還有一些更加苛刻的要求,這個看個人了,摘自網絡:

所有導出對象都需要注釋說明其用途;非導出對象根據情況進行注釋。
如果對象可數且無明確指定數量的情況下,一律使用單數形式和一般進行時描述;否則使用復數形式。
包、函數、方法和類型的注釋說明都是一個完整的句子。
句子類型的注釋首字母均需大寫;短語類型的注釋首字母需小寫。
注釋的單行長度不能超過 80 個字符。
類型的定義一般都以單數形式描述:

// Request represents a request to run a command. type Request struct { ...

如果為接口,則一般以以下形式描述:

 // FileInfo is the interface that describes a file and is returned by Stat and Lstat.
 type FileInfo interface { ...

函數與方法的注釋需以函數或方法的名稱作為開頭:

// Post returns *BeegoHttpRequest with POST method.

如果一句話不足以說明全部問題,則可換行繼續進行更加細致的描述:

 // Copy copies file from source to target path.
 // It returns false and error when error occurs in underlying function calls.

若函數或方法為判斷類型(返回值主要為 bool 類型),則以 name> returns true if 開頭:

 // HasPrefix returns true if name has any string in given slice as prefix.
 func HasPrefix(name string, prefixes []string) bool { ...

5.3 特別注釋

  • TODO:提醒維護人員此部分代碼待完成
  • FIXME:提醒維護人員此處有BUG待修復
  • NOTE:維護人員要關注的一些問題說明

6. 包的導入

單行的包導入

import "fmt"

多個包導入,請使用 {} 來組織

import {
 "fmt"
 "os"
}

另外根據包的來源,對排版還有一定的要求

標準庫排最前面,第三方包次之、項目內的其它包和當前包的子包排最后,每種分類以一空行分隔。
盡量不要使用相對路徑來導入包。

import (
  "fmt"
  "html/template"
  "net/http"
  "os"
 
  "github.com/codegangsta/cli"
  "gopkg.in/macaron.v1"
 
  "github.com/gogits/git"
  "github.com/gogits/gfm"
 
  "github.com/gogits/gogs/routers"
  "github.com/gogits/gogs/routers/repo"
  "github.com/gogits/gogs/routers/user"
)

7. 善用 gofmt

除了命名規范外,Go 還有很多格式上的規范,比如

  1. 使用 tab 進行縮進
  2. 一行最長不要超過 80 個字符

因此在格式上的問題,你大部分都可以放心交由 gofmt 幫你調整。關于 gofmt 的文章還在寫,應該這兩天就會更新。你可以過兩天再來看看。

參考文章:

Go語言(Golang)編碼規范

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

您可能感興趣的文章:
  • golang語言編碼規范的實現

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

巨人網絡通訊聲明:本文標題《一文了解Go語言中編碼規范的使用》,本文關鍵詞  一文,了解,語,言中,編碼,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《一文了解Go語言中編碼規范的使用》相關的同類信息!
  • 本頁收集關于一文了解Go語言中編碼規范的使用的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    日韩视频在线永久播放| 成人va在线观看| 丁香啪啪综合成人亚洲小说| 日韩一区二区在线看| 亚洲午夜精品网| 一本大道久久a久久精品综合| 久久精品在线免费观看| 国产福利精品一区二区| 欧美大白屁股肥臀xxxxxx| 免费观看在线色综合| 久久久久久久综合狠狠综合| 免费成人美女在线观看.| 欧美成人高清电影在线| 国产传媒久久文化传媒| 亚洲欧美色图小说| 91久久精品一区二区二区| 亚洲成av人片在线| 久久伊人蜜桃av一区二区| 91在线视频免费观看| 日韩国产欧美一区二区三区| 精品国产乱码久久久久久蜜臀| 成人免费视频视频在线观看免费 | 欧美日韩国产a| 精品综合免费视频观看| 1区2区3区欧美| 91.麻豆视频| av在线播放成人| 亚洲18色成人| 中文字幕一区不卡| 欧美大片一区二区三区| 91黄色免费版| 久久99国产精品久久99| 国产欧美一区二区精品忘忧草| 亚洲视频在线观看三级| 国产精品天干天干在线综合| 亚洲v精品v日韩v欧美v专区| 26uuu亚洲综合色欧美| 91福利国产精品| 国产成人激情av| 亚洲午夜久久久久久久久久久| 2017欧美狠狠色| 欧美午夜一区二区三区| 成人午夜激情片| 狠狠久久亚洲欧美| 日本午夜一区二区| 亚洲综合小说图片| 中文字幕一区二区三区不卡在线| 欧美va日韩va| 亚洲国产精品成人综合| 99久久99久久综合| 日韩一区二区视频| 精品国精品国产尤物美女| 成人午夜在线免费| 午夜影院久久久| 久久久精品综合| 欧美一区二区视频在线观看2020| 色94色欧美sute亚洲线路一久 | 日韩美一区二区三区| 欧美日韩国产天堂| 色综合久久久久网| 成人av午夜影院| 成人精品在线视频观看| 成人18精品视频| 国产精一品亚洲二区在线视频| 精品一区二区三区免费| 国产精品麻豆久久久| 激情都市一区二区| 国内精品伊人久久久久av影院| 日韩制服丝袜av| 天堂久久一区二区三区| 日本不卡一区二区三区高清视频| 亚洲va欧美va天堂v国产综合| 亚洲香肠在线观看| 日韩激情一区二区| 免费在线观看成人| 国产精品亚洲一区二区三区妖精 | 亚洲成av人片在线| 丝袜亚洲精品中文字幕一区| 精品写真视频在线观看| 国产精品一级在线| 91老司机福利 在线| 欧美日韩电影在线播放| 日韩区在线观看| 国产欧美1区2区3区| 亚洲精品国产精华液| 亚洲成人动漫在线免费观看| 麻豆国产精品官网| 成人午夜私人影院| 欧美日韩aaa| 国产三区在线成人av| 夜夜夜精品看看| 久草中文综合在线| av影院午夜一区| 91精品国产色综合久久ai换脸 | 成人国产精品免费| 91成人免费在线视频| 3atv在线一区二区三区| 国产精品日产欧美久久久久| 亚洲制服欧美中文字幕中文字幕| 美女www一区二区| 色综合天天综合给合国产| 欧美一区二区三区四区视频| 国产亚洲短视频| 日韩国产精品久久久久久亚洲| 岛国av在线一区| 日韩美女主播在线视频一区二区三区| 国产精品国产三级国产普通话三级| 亚洲在线免费播放| 国产成人夜色高潮福利影视| 在线不卡a资源高清| 欧美日韩免费一区二区三区| 26uuu精品一区二区在线观看| 国产日韩在线不卡| 欧美精品在线观看一区二区| 成人激情小说乱人伦| 国产精品夜夜嗨| 久久99久久久久| 日韩主播视频在线| 日本不卡视频在线| 美腿丝袜亚洲一区| 国产不卡免费视频| 91片黄在线观看| www.色精品| 国产一区二区三区久久悠悠色av| 日韩电影在线一区| 国产乱码精品一区二区三区忘忧草 | 亚洲成av人**亚洲成av**| 日本高清不卡在线观看| 亚洲成人第一页| 91久久人澡人人添人人爽欧美 | 国产精品高潮呻吟| 亚洲一二三区在线观看| 国产一区二区三区观看| 日韩—二三区免费观看av| 国产精品妹子av| 国产精品久久久久aaaa| 一区二区三区毛片| 国产精品不卡一区二区三区| 国产午夜精品在线观看| 精品国内片67194| 欧美私模裸体表演在线观看| 国产欧美日韩三区| 国产一区二区三区四区五区美女 | 免费在线观看精品| 日韩午夜激情视频| 韩国一区二区三区| 久久精品人人做人人爽人人| 高清成人在线观看| 综合久久久久久| 91小视频在线观看| 亚洲成年人影院| 日韩久久精品一区| 国产成人免费av在线| 久久午夜老司机| 北条麻妃一区二区三区| 一卡二卡三卡日韩欧美| 欧美一区二区视频免费观看| 看电视剧不卡顿的网站| 国产日本欧美一区二区| caoporn国产精品| 亚洲成人自拍偷拍| 久久久久国产精品人| 国产成人精品1024| 亚洲在线中文字幕| 精品国产乱码久久久久久夜甘婷婷| 大白屁股一区二区视频| 亚洲国产成人av| 久久久久97国产精华液好用吗| 色综合一区二区三区| 卡一卡二国产精品| 亚洲综合精品自拍| wwwwww.欧美系列| 欧美午夜电影一区| 国产在线精品一区二区不卡了| 国产欧美一区二区在线| 欧美日韩国产电影| 丁香亚洲综合激情啪啪综合| 午夜精品久久久久影视| 国产午夜精品一区二区三区四区| 色吧成人激情小说| 国产一二精品视频| 首页国产丝袜综合| 亚洲精品免费在线| 国产欧美一区二区三区在线老狼| 欧美日韩国产首页在线观看| 国产一区二区不卡| 午夜欧美一区二区三区在线播放| 国产欧美一区二区三区鸳鸯浴| 99久久国产综合精品色伊| 国产一区在线观看麻豆| 一区二区三区美女视频| 亚洲国产精品成人综合色在线婷婷 | 成人高清免费在线播放| 三级一区在线视频先锋| 国产精品免费丝袜| 国产精品色哟哟| 久久久久久黄色| 精品盗摄一区二区三区| 91精品国产一区二区| 欧美日韩三级在线|