初探Golang(2)-常量和命名規范

1 命名規范

1.1 Go是一門區分大小寫的語言。

命名規則涉及變量、常量、全局函數、結構、接口、方法等的命名。 Go語言從語法層面進行了以下限定:任何需要對外暴露的名字必須以大寫字母開頭,不需要對外暴露的則應該以小寫字母開頭。

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

而Go 語言中,任何標識符(變量,常量,函數,自定義類型等)都應該滿足以下規律:

  1. 連續的字符或數字組成。
  2. 以字符或下劃線開頭。
  3. 不能和 Go 關鍵字沖突。
    go有如下關鍵字
break        default      func         interface    select
case         defer        go           map          struct
chan         else         goto         package      switch
const        fallthrough  if           range        type
continue     for          import       return       var

1.2 包名稱

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

1.3 文件命名

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

1.4 結構體命名

采用駝峰命名法,首字母根據訪問控制大寫或者小寫

struct 申明和初始化格式采用多行,例如下面:

type MainConfig struct {Port string `json:"port"`Address string `json:"address"`
}

1.5 常量命名

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

    const APP_URL = "https://www.baidu.com"

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

type Scheme stringconst (HTTP  Scheme = "http"HTTPS Scheme = "https"
)

1.6 變量命名

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

如果變量為私有,且特有名詞為首個單詞,則使用小寫,如 appService
若變量類型為 bool 類型,則名稱應以 Has, Is, Can 或 Allow 開頭

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

2. 錯誤處理

錯誤處理的原則就是不能丟棄任何有返回err的調用,不要使用 _ 丟棄,必須全部處理。接收到錯誤,要么返回err,或者使用log記錄下來

  • 盡早return:一旦有錯誤發生,馬上返回
  • 盡量不要使用panic,除非你知道你在做什么
  • 錯誤描述如果是英文必須為小寫,不需要標點結尾
  • 采用獨立的錯誤流進行處理
// 錯誤寫法
if err != nil {// error handling
} else {// normal code
}// 正確寫法
if err != nil {// error handlingreturn // or continue, etc.
}
// normal code

3. 單元測試

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

4. 常量

相對于變量而言,常量是在程序使用過程中,不會改變的數據。有些地方你需要將定義好的常量重復使用,代碼中你不允許它的值改變。例如 圓周率 在程序執行過程中不會改變。

image.png

image.png

常量只能在其聲明的范圍內使用,如果在一個函數內部作用域中聲明的常量與外部名稱相同, 則只用自己內部的常量, 它將忽略外部的常量。

image.png

4.1 總結

  1. 常量數值不能修改。
  2. 常量定義后可以不使用。
  3. 常量定義不能使用簡短定義方式。
  4. 常量中使用的數據類型只能是 整型、布爾、浮點、復數類型、字符串類型。

5. iota特殊的常量

iota是常量里面的計數器,初始值默認值是0,可以被編譯器自動修改,每定義一組常量時,iota逐行自增1。

image.png

因為go中沒有像Java那樣的枚舉類型,因此我們可以通過iota來實現枚舉類型

const (Spring Mytype = iotaSummerAutumnWinter
)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/391252.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/391252.shtml
英文地址,請注明出處:http://en.pswp.cn/news/391252.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

789

789 轉載于:https://www.cnblogs.com/Forever77/p/11524161.html

sql的split()函數

ALTER function [dbo].[StrToList_Test](Str varchar(max), fg NVARCHAR(200)) returns table table(value nvarchar(max) ) as begindeclare tempStr nvarchar(max),len INT LEN(fg); --去除前后分割符 while substring(Str,1,len)fg beginset Strsubstring(Str,len1,len(S…

大數據平臺構建_如何像產品一樣構建數據平臺

大數據平臺構建重點 (Top highlight)Over the past few years, many companies have embraced data platforms as an effective way to aggregate, handle, and utilize data at scale. Despite the data platform’s rising popularity, however, little literature exists on…

初探Golang(3)-數據類型

Go語言擁有兩大數據類型,基本數據類型和復合數據類型。 1. 數值類型 ##有符號整數 int8(-128 -> 127) int16(-32768 -> 32767) int32(-2,147,483,648 -> 2,147,483,647) int64&#x…

freecodecamp_freeCodeCamp的服務器到底發生了什么?

freecodecampUpdate at 17:00 California time: We have now fixed most of the problems. Were still working on a few known issues, but /learn is now fully operational.加利福尼亞時間17:00更新 :我們現在解決了大多數問題。 我們仍在處理一些已知問題&#…

為什么Linux下的環境變量要用大寫而不是小寫

境變量的名稱通常用大寫字母來定義。實際上用小寫字母來定義環境變量也不會報錯,只是習慣上都是用大寫字母來表示的。 首先說明一下,在Windows下是不區分大小寫的,所以在Windows下怎么寫都能獲取到值。 而Linux下不同,區分大小寫&…

python:連接Oracle數據庫后控制臺打印中文為??

打印查詢結果,中文顯示為了??? [(72H FCR, 2.0), (?????, 8.0)] E:\Python35\Lib\site-packages中新增文件: sitecustomize.py import os os.environ[NLS_LANG] SIMPLIFIED CHINESE_CHINA.UTF8 轉載于:https://w…

時間序列預測 時間因果建模_時間序列建模以預測投資基金的回報

時間序列預測 時間因果建模Time series analysis, discussed ARIMA, auto ARIMA, auto correlation (ACF), partial auto correlation (PACF), stationarity and differencing.時間序列分析,討論了ARIMA,自動ARIMA,自動相關(ACF),…

初探Golang(4)-map和流程控制語句

1.map map 是引用類型的,如果聲明沒有初始化值,默認是nil。空的切片是可以直接使用的,因為他有對應的底層數組,空的map不能直接使用。需要先make之后才能使用。 //1, 聲明map 默認值是nil var m1 map[key_data_type]value_data_type 聲明 …

網絡傳輸之TCP/IP協議族

我們現實網絡無處不在,我們被龐大的虛擬網絡包圍,但我們卻對它是怎樣把我們的信息傳遞并實現通信的,我們并沒有了解過,那么當我們在瀏覽器中出入一段地址,按下回車這背后都會發生什么? 比如說一般場景下&am…

(58)PHP開發

LAMP0、使用include和require命令來包含外部PHP文件。使用include_once命令,但是include和include_once命令相比的不足就是這兩個命令并不關心請求的文件是否實際存在,如果不存在,PHP解釋器就會直接忽略這個命令并且顯示一個錯誤消息&#xf…

css flexbox模型_如何將Flexbox后備添加到CSS網格

css flexbox模型I shared how to build a calendar with CSS Grid in the previous article. Today, I want to share how to build a Flexbox fallback for the same calendar. 在上一篇文章中,我分享了如何使用CSS Grid構建日歷。 今天,我想分享如何為…

python:封裝連接數據庫方法

config.py # 數據庫測試環境 name *** password ****** host_port_sid 10.**.*.**:1521/bidbuat OracleOperation.py import cx_Oracle import configclass OracleOperation(object):# 執行下面的execute_sql方法時會自動執行該初始化方法進行連接數據庫def __init__(self):…

貝塞爾修正_貝塞爾修正背后的推理:n-1

貝塞爾修正A standard deviation seems like a simple enough concept. It’s a measure of dispersion of data, and is the root of the summed differences between the mean and its data points, divided by the number of data points…minus one to correct for bias.標…

RESET MASTER和RESET SLAVE使用場景和說明【轉】

【前言】在配置主從的時候經常會用到這兩個語句,剛開始的時候還不清楚這兩個語句的使用特性和使用場景。 經過測試整理了以下文檔,希望能對大家有所幫助; 【一】RESET MASTER參數 功能說明:刪除所有的binglog日志文件,…

Kubernetes 入門(1)基本概念

1. Kubernetes簡介 作為一個目前在生產環境已經廣泛使用的開源項目 Kubernetes 被定義成一個用于自動化部署、擴容和管理容器應用的開源系統;它將一個分布式軟件的一組容器打包成一個個更容易管理和發現的邏輯單元。 Kubernetes 是希臘語『舵手』的意思&#xff0…

Python程序互斥體

Python程序互斥體 有時候我們需要程序只運行一個實例,在windows平臺下我們可以很簡單的用mutex實現這個目的。 ??在開始時,程序創建了一個命名的mutex,這個mutex可以被其他進程檢測到。 這樣如果程序已經啟動,再次運行時的進程就…

890

890 轉載于:https://www.cnblogs.com/Forever77/p/11528605.html

android 西班牙_分析西班牙足球聯賽(西甲)

android 西班牙The Spanish football league commonly known as La Liga is the first national football league in Spain, being one of the most popular professional sports leagues in the world. It was founded in 1929 and has been held every year since then with …

Goalng軟件包推薦

2019獨角獸企業重金招聘Python工程師標準>>> 前言 哈嘍大家好呀! 馬上要迎來狗年了大家是不是已經懷著過年的心情了呢? 今天筆者給大家帶來了一份禮物, Goalng的軟件包推薦, 主要總結了一下在go語言中大家開源的優秀的軟件, 大家了解之后在后續使用過程有遇到如下軟…