Golang命名規範

來源:互聯網
上載者:User

Golang命名規範

image

檔案名稱

  • 整個應用或包的主入口檔案應當是 main.go 或與應用程式名稱簡寫相同。例如:Gogs 的主入口檔案名稱為 gogs.go

函數或方法

  • 若函數或方法為判斷類型(傳回值主要為 bool 類型),則名稱應以 Has, Is, CanAllow 等判斷性動詞開頭:

    func HasPrefix(name string, prefixes []string) bool { ... }func IsEntry(name string, entries []string) bool { ... }func CanManage(name string) bool { ... }func AllowGitHook() bool { ... }

常量

  • 常量均需使用全部大寫字母組成,並使用底線分詞:

    const APP_VER = "0.7.0.1110 Beta"
  • 如果是枚舉類型的常量,需要先建立相應類型:

    type Scheme stringconst (    HTTP  Scheme = "http"    HTTPS Scheme = "https")
  • 如果模組的功能較為複雜、常量名稱容易混淆的情況下,為了更好地區分枚舉類型,可以使用完整的首碼:

    type PullRequestStatus intconst (    PULL_REQUEST_STATUS_CONFLICT PullRequestStatus = iota    PULL_REQUEST_STATUS_CHECKING    PULL_REQUEST_STATUS_MERGEABLE)

變數

  • 變數命名基本上遵循相應的英文表達或簡寫。

  • 在相對簡單的環境(對象數量少、針對性強)中,可以將一些名稱由完整單詞簡寫為單個字母,例如:

    • user 可以簡寫為 u
    • userID 可以簡寫 uid
  • 若變數類型為 bool 類型,則名稱應以 Has, Is, CanAllow 開頭:

    var isExist boolvar hasConflict boolvar canManage boolvar allowGitHook bool
  • 上條規則也適用於結構定義:

    // Webhook represents a web hook object.type Webhook struct {    ID           int64 `xorm:"pk autoincr"`    RepoID       int64    OrgID        int64    URL          string `xorm:"url TEXT"`    ContentType  HookContentType    Secret       string `xorm:"TEXT"`    Events       string `xorm:"TEXT"`    *HookEvent   `xorm:"-"`    IsSSL        bool `xorm:"is_ssl"`    IsActive     bool    HookTaskType HookTaskType    Meta         string     `xorm:"TEXT"` // store hook-specific attributes    LastStatus   HookStatus // Last delivery status    Created      time.Time  `xorm:"CREATED"`    Updated      time.Time  `xorm:"UPDATED"`}

變數命名慣例

變數名稱一般遵循駝峰法,但遇到特有名詞時,需要遵循以下規則:

  • 如果變數為私人,且特有名詞為首個單詞,則使用小寫,如 apiClient
  • 其它情況都應當使用該名詞原有的寫法,如 APIClientrepoIDUserID

下面列舉了一些常見的特有名詞:

// A GonicMapper that contains a list of common initialisms taken from golang/lintvar 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,}
image
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.