日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

go 变量大写_28. 一文了解Go语言中编码规范

發布時間:2025/3/15 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 go 变量大写_28. 一文了解Go语言中编码规范 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

大家好,我是明哥。

由于某些不可抗力,之前該專欄的所有內容都被刪除了。因此之后的一段時間內,我會重新發布這些文章,先給已經看過的關注者提個醒。


本文原文:http://golang.iswbm.com

Github:http://github.com/iswbm/GolangCodingTime

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

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

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. 變量命名

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

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

  • 函數名還是使用 駝峰命名法
  • 但是有一點需要注意,在 Golang 中是用大小寫來控制函數的可見性,因此當你需要在包外訪問,請使用 大寫字母開頭
  • 當你不需要在包外訪問,請使用小寫字母開頭
  • 另外,函數內部的參數的排列順序也有幾點原則

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

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

    type helloWorld interface {func Hello(); }type SayHello helloWorld

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

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

    6. 注釋規范

    注釋分為

    6.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 文件說明
  • 6.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 { ...

    6.3 特別注釋

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

    7. 包的導入

    單行的包導入

    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" )

    8. 善用 gofmt

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

  • 使用 tab 進行縮進
  • 一行最長不要超過 80 個字符
  • 因此在格式上的問題,你大部分都可以放心交由 gofmt 幫你調整。關于 gofmt 的文章還在寫,應該這兩天就會更新。你可以過兩天再來看看。

    參考文章:

    • Go語言(Golang)編碼規范

    好了,今天的文章就到這里了。

    若今天的分享對你有幫助,不如點個贊,支持一下?

    總結

    以上是生活随笔為你收集整理的go 变量大写_28. 一文了解Go语言中编码规范的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。