Go語言中常量的命名規則詳解

1.?常量的基本命名規則

1.1.?命名格式

1. 使用const關鍵字聲明;

2. 命名格式:const 常量名 [類型] = 值;

3. 類型可以省略,由編譯器推斷;

1.2.?命名風格

大小寫規則:

1. 首字母大寫:導出常量,可被其他包訪問;

2. 首字母小寫:包內私有常量;

命名慣例:

1. 推薦使用駝峰命名法;

2. 全大寫+下劃線風格常用于特殊常量;

1.3. 有效命名示例

const MaxRetryCount = 3
const defaultTimeout = 30
const API_VERSION = "v1.0"
const (StatusOK = 200StatusNotFound = 404
)

1.4.?無效命名示例

const 3attempts = 3     // 錯誤:不能以數字開頭
const user-name = "tom" // 錯誤:不能包含連字符
const var = "value"     // 錯誤:不能使用關鍵字

2.?常量組的命名規則

2.1.?基本語法

const (常量1 = 值1常量2 = 值2...
)

2.2.?分組規則

1. 相關常量應該分組聲明;

2. 每組常量應有明確的邏輯關聯;

3. 可以使用空白行分隔不同組的常量;

2.3.?示例

// HTTP狀態碼
const (StatusOK        = 200StatusCreated   = 201StatusBadRequest = 400
)// 數據庫配置
const (DBHost     = "localhost"DBPort     = 5432DBUser     = "admin"DBPassword = "secret"
)

3.?iota的使用規范

3.1.?基本用法

const (Zero = iota  // 0One          // 1Two          // 2
)

3.2.?高級用法規范

1.?顯式重置

const (A = iota  // 0B         // 1
)const (       // iota重置為0C = iota  // 0D         // 1
)

2.?表達式計算

const (KB = 1 << (10 * iota)  // 1 << 0 = 1MB                     // 1 << 10 = 1024GB                     // 1 << 20 = 1048576
)

3.?跳過值

const (_ = iota      // 跳過0Read          // 1Write         // 2Execute       // 3
)

4.?多常量同值

const (A, B = iota, iota + 1  // A=0, B=1C, D                   // C=1, D=2
)

3.3.?最佳實踐

1. 為iota常量添加注釋說明;

2. 避免過度復雜的iota表達式;

3. 將相關iota常量分組聲明;

4. 考慮使用自定義類型增強可讀性;

4.?類型化常量的命名

4.1.?顯式類型聲明

const Pi float64 = 3.14159
const Prefix string = "usr_"

4.2.?類型推斷

const MaxSize = 1024      // 默認為int
const Greeting = "Hello"  // 默認為string

4.3.?類型化常量組

const (X int = 1Y     = 2.0  // 無類型浮點數Z     = "3"  // 無類型字符串
)

5.?特殊常量命名場景

5.1.?枚舉模擬

type Weekday intconst (Sunday Weekday = iotaMondayTuesdayWednesdayThursdayFridaySaturday
)

5.2.?位掩碼常量

const (FlagNone  = 0FlagRead  = 1 << iota  // 1FlagWrite              // 2FlagExec               // 4
)

5.3.?配置常量

const (DefaultPort    = 8080DefaultTimeout = 30 * time.SecondMaxConnections = 100
)

6.?命名注意事項

1. 避免魔數:使用有意義的常量名替代直接值;

// 不推薦
if timeout > 30 { ... }// 推薦
const DefaultTimeout = 30
if timeout > DefaultTimeout { ... }

2. 保持一致性:相同概念的常量使用統一命名風格;

3. 注釋說明:為復雜常量或特殊值添加注釋;

4. 作用域控制:合理使用大小寫控制常量可見性;

5. 避免沖突:注意與預定義標識符的命名沖突;

通過遵循這些命名規則和最佳實踐,可以使Go代碼中的常量更加清晰、可維護,并充分利用Go語言常量的特性。

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

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

相關文章

22、web場景-web開發簡介

22、web場景-web開發簡介 Web開發是指創建和維護在互聯網上運行的網站和應用程序的過程。它涉及多個技術領域&#xff0c;包括前端開發、后端開發和數據庫管理&#xff0c;共同實現網站的功能和用戶體驗。 ### 一、Web開發的基本概念 #### 1. **Web應用程序** - **狹義上**&am…

Structured Query Language(SQL)它到底是什么?

Structured Query Language&#xff08;SQL&#xff09; 的中文意思是 “結構化查詢語言”&#xff0c;它是一種專門用于管理和操作關系型數據庫的標準化編程語言。以下是其核心含義和用途的總結&#xff1a; 1. 核心功能 定義數據&#xff1a;創建、修改數據庫結構&#xff08…

ubuntu22.04上運行opentcs6.4版本

1、下載github上的源碼&#xff1a; openTCS - Downloads 2、安裝java21 我的版本是&#xff1a;java --version java 21.0.6 2025-01-21 LTS Java(TM) SE Runtime Environment (build 21.0.68-LTS-188) Java HotSpot(TM) 64-Bit Server VM (build 21.0.68-LTS-188, mixed mo…

游戲引擎學習第307天:排序組可視化

簡短談談直播編程的一些好處。 上次結束后&#xff0c;很多人都指出代碼中存在一個拼寫錯誤&#xff0c;因此這次我們一開始就知道有一個 bug 等待修復&#xff0c;省去了調試尋找錯誤的時間。 今天的任務就是修復這個已知 bug&#xff0c;然后繼續排查其他潛在的問題。如果短…

基于PyTorch的殘差網絡圖像分類實現指南

以下是一份超過6000字的詳細技術文檔&#xff0c;介紹如何在Python環境下使用PyTorch框架實現ResNet進行圖像分類任務&#xff0c;并部署在服務器環境運行。內容包含完整代碼實現、原理分析和工程實踐細節。 基于PyTorch的殘差網絡圖像分類實現指南 目錄 殘差網絡理論基礎服務…

(27)運動目標檢測 之 分類(如YOLO) 數據集自動劃分

(27)運動目標檢測 之 分類(如YOLO) 數據集自動劃分 目標檢測場景下有時也會遇到分類需求,比如車牌識別、顏色識別等等本文以手寫數字數據集為例,講述如何將 0~9 10個類別的數據集自動劃分,支持調整劃分比例手寫數字數據集及Python實現代碼可在此直接下載:https://downloa…

Ubuntu安裝1Panel可視化管理服務器及青龍面板及其依賴安裝教程

Ubuntu安裝1Panel可視化管理服務器及青龍面板及其依賴安裝教程 前言一、準備工作二、操作步驟1、1Panel安裝2、青龍面板安裝3、青龍面板依賴安裝 前言 1Panel 是一款現代化的開源 Linux 服務器管理面板&#xff0c;專注于簡化服務器運維操作&#xff0c;提供可視化界面管理 Web…

DataGridView中拖放帶有圖片的Excel,實現數據批量導入

1、帶有DataGridView的窗體&#xff0c;界面如下 2、編寫DataGridView支持拖放的代碼 Private Sub DataGridView1_DragEnter(ByVal sender As Object, ByVal e As DragEventArgs) Handles DataGridView1.DragEnterIf e.Data.GetDataPresent(DataFormats.FileDrop) ThenDim file…

創新點!貝葉斯優化、CNN與LSTM結合,實現更準預測、更快效率、更高性能!

能源與環境領域的時空數據預測面臨特征解析與參數調優雙重挑戰。CNN-LSTM成為突破口&#xff1a;CNN提取空間特征&#xff0c;LSTM捕捉時序依賴&#xff0c;實現時空數據的深度建模。但混合模型超參數&#xff08;如卷積核數、LSTM層數&#xff09;調優復雜&#xff0c;傳統方法…

獲取點擊點所在區域所能容納最大連續空白矩形面積及頂點坐標需求分析及相關解決方案

近日拿到一個需求&#xff0c;通過分析思考以及查詢資料得以解決&#xff0c;趁著不忙記錄一下&#xff1a; 需求&#xff1a; 頁面上放一個圖片控件&#xff0c;載入圖片之后&#xff0c;點擊圖片任何一個白色空間&#xff0c;找出點擊點所在區域所能容納的最大連續空白矩形…

vue-cli 構建打包優化(JeecgBoot-Vue2 配置優化篇)

項目&#xff1a;jeecgboot-Vue2 在項目二次開發后&#xff0c;在本人電腦打包時間為3分35秒左右 webpack5默認優化&#xff1a; Tree Shaking&#xff08;搖樹優化&#xff09;&#xff1a;刪除未使用的代碼base64 內聯&#xff1a; 小于 8KB 的資源&#xff08;圖片等&…

科學養生:解鎖現代健康生活新方式

在現代社會&#xff0c;熬夜加班、外賣快餐、久坐不動成了很多人的生活常態&#xff0c;由此引發的亞健康問題日益凸顯。其實&#xff0c;遵循科學的養生方式&#xff0c;無需復雜操作&#xff0c;從日常細節調整&#xff0c;就能顯著提升健康水平。? 飲食上&#xff0c;把控…

PostGIS使用小結

文章目錄 PostGIS使用小結簡介安裝配合postgres使用的操作1.python安裝gdal PostGIS使用小結 簡介 PostGIS 是 PostgreSQL 數據庫的地理空間數據擴展&#xff0c;通過為 PostgreSQL數據庫增加地理空間數據類型、索引、函數和操作符&#xff0c;使其成為功能強大的空間數據庫&…

NNG和DDS

NNG (Nanomsg Next Generation) 和 DDS (Data Distribution Service) 是兩種不同的通信協議&#xff0c;各自在不同場景下具有其優勢。下面我將對這兩種技術進行詳細解釋&#xff0c;并通過具體的例子來說明它們如何應用在實際場景中。 1. NNG (Nanomsg Next Generation) NNG簡…

自制操作系統day7(獲取按鍵編碼、FIFO緩沖區、鼠標、鍵盤控制器(Keyboard Controller, KBC)、PS/2協議)

day7 獲取按鍵編碼&#xff08;hiarib04a&#xff09; void inthandler21(int *esp) {struct BOOTINFO *binfo (struct BOOTINFO *) ADR_BOOTINFO; // 獲取系統啟動信息結構體指針unsigned char data, s[4]; // data: 鍵盤數據緩存&#x…

Javase 基礎加強 —— 09 IO流第二彈

本系列為筆者學習Javase的課堂筆記&#xff0c;視頻資源為B站黑馬程序員出品的《黑馬程序員JavaAI智能輔助編程全套視頻教程&#xff0c;java零基礎入門到大牛一套通關》&#xff0c;章節分布參考視頻教程&#xff0c;為同樣學習Javase系列課程的同學們提供參考。 01 緩沖字節…

服務器操作系統調優內核參數(方便查詢)

fs.aio-max-nr1048576 #此參數限制并發未完成的異步請求數目&#xff0c;應該設置避免I/O子系統故障 fs.file-max1048575 #該參數決定了系統中所允許的文件句柄最大數目&#xff0c;文件句柄設置代表linux系統中可以打開的文件的數量 fs.inotify.max_user_watches8192000 #表…

[Windows] 格式工廠 FormatFactory v5.20.便攜版 ——多功能媒體文件轉換工具

想要輕松搞定各類媒體文件格式轉換&#xff1f;這款 Windows 平臺的格式工廠 FormatFactory v5.20 便攜版 正是你的不二之選&#xff01;無需安裝&#xff0c;即開即用&#xff0c;為你帶來高效便捷的文件處理體驗。 全能格式轉換&#xff0c;滿足多元需求 軟件功能覆蓋視頻、…

[AI]主流大模型、ChatGPTDeepseek、國內免費大模型API服務推薦(支持LangChain.js集成)

主流大模型特色對比表 模型核心優勢適用場景局限性DeepSeek- 數學/代碼能力卓越&#xff08;GSM8K準確率82.3%&#xff09;1- 開源生態完善&#xff08;支持醫療/金融領域&#xff09;7- 成本極低&#xff08;API價格僅為ChatGPT的2%-3%&#xff09;5科研輔助、代碼開發、數據…

國際薦酒師(香港)協會亮相新西蘭葡萄酒巡展深度參與趙鳳儀大師班

國際薦酒師&#xff08;香港&#xff09;協會率團亮相2025新西蘭葡萄酒巡展 深度參與趙鳳儀MW“百年百碧祺”大師班 廣州/上海/青島&#xff0c;2025年5月12-16日——國際薦酒師&#xff08;香港&#xff09;協會&#xff08;IRWA&#xff09;近日率專業代表團出席“純凈獨特&…