Go學習1:常量、變量的命名

golang 安裝 | go-zero Documentation

????????在這個文檔里,環境變量系統自動配好了(自定義的一樣)不需要修改環境變量。

我下載的是1.25版本的。

目前使用go mod管理項目。

? ? ? ? C++的產出比太低,而Java和C#哲學又來源于C++。

Go語言成功的項目

使用vscode管理項目:

????????以前項目需要在goPath下創建,現在不需要了,在哪里都可以。

首先下載安裝包,下一步下一步,安裝go語言的安裝包

go run運行項目

go build編譯項目

我這里是go build后生成對應的.exe文件,然后.\? .exe文件

1. print和println的區別

1.println會換行

print不會換行

2.println輸出多個字符中間會有空格

? ? ? ? print沒有空格

fmt.Print("A", "B", "C")   //中間沒有空格
fmt.Println("A", "B", "C") //中間有空格

2.prinln和printf的區別


2. 定義變量

var a = "aaa" //go語言中變量定義后必須要使用
// fmt.Println(a)
fmt.Printf("%v", a)

%v是格式化輸出

1.var? ?聲明變量

var? 變量名? 類型?

var username string

? ? ? ? 變量聲明后沒有初始化的話 ,值為空。

var a1 = "張三"
fmt.Println(a1)

???變量名稱的命名:Go語言變量名由字母、數字、下劃線組成,其中首個字符不能為數字。

????????Go語言中關鍵字和保留字都不能用作變量名稱。

同一作用域內,變量名稱不能重復聲明

2. 初始化

①第一種初始化變量的方式:

var username string
username = "張三"

② 定義的時候初始化

var username string = "張三"

會有報錯

var username = "張三"
3. 一次聲明多個變量

var? 變量名稱,變量名稱? ?類型

var (

? ? ? ? 變量名稱? 類型

? ? ? ? 變量名稱? ?類型

)

var a1, a2  string
var (a1 stringa2 inta3 string
)

打印測試:

a1 = "張三"
a2 = 20
a3 = "男"
fmt.Println(a1, a2, a3)
4. 短變量聲明法
①基本類型
username := "張三"

短變量聲明法

fmt.Printf("類型: %T", username)

通過%T我們可以知道這個聲明的變量是什么類型

②聲明多個變量

使用短變量聲明法一次聲明多個變量并初始化

a,b,c := 12,13,20

如果類型不一致,也不會報錯

a,b,c := 12,13,"C"

fmt.Printf("a類型:%T, b類型:%T, c類型:%T", a, b, c)

!!注意

????????短變量聲明法只能聲明局部變量,不能聲明全局變量

5.匿名變量

????????匿名變量 在使用多重賦值時,如果想要忽略某個值,可以使用匿名變量 (anonymous variable)

? ? ? ? 匿名變量可以用一個下劃線 _ 表示

舉例:

首先封裝一個方法:

func getUserInfo() (string, int){return "zhangsan", 10
}

我們要返回一個string類型和一個int類型的數據

然后在main函數中 調用這個方法

var username , age = getUserInfo()
fmt.Println(username, age)

這個我們可以獲得這兩個值。

如果我們想要接收username,忽略age,這樣寫:

var username, _ =getUserInfo()
fmt.Println(username)//zhangsan

匿名變量不占用命名空間,不會分配內存,所以匿名變量之間不存在重復聲明

var _, age = getUserInfo()
fmt.Println(age)

3.定義常量

? ? ? ? 相對于變量,常量是恒定不變的值,多用于程序運行期間不會改變的那些值。

常量的聲明和變量聲明非常類似,只是把var換成了 const, 常量在定義的時候必須賦值。

3.1 使用const定義常量

const pi = 3.14159

如果是這樣,會報錯

const pi string
pi = "xxx"

只能定義的時候賦值使用

3.2 聲明多個常量

const (A = "A"B = "B"
)

const同時聲明多個常量時,如果省略了值則表示和上面一行的值相同。

const (n1 = 100n2n3n4
)

這樣的話,n2,n3,n4和n1的值相同。都是100

3.3 const 結合 iota 的使用

????????iota是golang語言的常量計數器,只能在常量的表達式中使用。

????????iota在const關鍵字出現時將被重置為0(const內部的第一行之前),const中每新增一行常量聲明將使iota計數一次(iota可理解為const語句塊中的行索引)。

const a = iota
fmt.Println(a)  // 0

如果一個常量等于iota時,這個常量就是0.

const (n1 = iotan2n3n4
)fmt.Println(n1, n2, n3, n4) //0,1,2,3
const (n1 = iota_n3n4
)
fmt.Println(n1, n3, n4)  //0  2 3

iota還可以在聲明中進行插隊

const (n1 = iota  //0n2 = 100   //100n3 = iota  //2n4         //3
)

多個 iota 定義在一行

const (n1, n2 = iota + 1, iota + 2   //1,2n3, n4                        //2,3n5, n6                        //3,4
)

4. GO語言變量、常量命名規則

  1. 變量名稱必須由數字、字母、下劃線組成。
  2. 標識符開頭不能是數字。
  3. 標識符不能是保留字和關鍵字。
  4. 變量的名字是區分大小寫的。如“ age” 和“Age” 是不同的變量。在實際的運用中,也建議不要用一個單詞大小寫區分兩個變量。
  5. 標識符(變量名稱)一定要見名思意:變量名稱建議用名詞,方法名稱建議用動詞。
  6. 變量命名一般采用駝峰式,當遇到特有名詞(縮寫或簡稱,如DNS)的時候,特有名詞根據是否私有全部大寫(公有)或小寫(私有)。

常量建議全部用大寫,當然不大寫也不報錯。


5.Go語言代碼風格

1. 代碼每一行結束后不用寫分號(;)

2. 運算符左右建議各加一個空格

var username string = "harriet"

3. Go語言程序員建議使用駝峰式命名

? ? ? ? 當名字由幾個單詞組成時優先采用大小寫分隔

4. 強制的代碼風格

? ? ? ? 左括號必須緊接著語句不換行。

5. 可以使用 go fmt格式化代碼

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

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

相關文章

2025_WSL2_Ubuntu20.04_C++20_concept 環境配置

需要使用 c20 新特性 concept 泛型約束 記錄如何在 wsl2 里面配置環境,如果需要源工程,可以私發 背景:使用 CMakeLists.txt 配置整個工程 從官網 https://gcc.gnu.org/projects/cxx-status.html#cxx20 可以看到 concept 受 g10 支持這里注意雖…

Encoder編碼器

Encoder編碼器 #include <libavutil/log.h> #include <libavutil/opt.h> #include <libavcodec/avcodec.h>static int encode(AVCodecContext *ctx, AVFrame *frame, AVPacket *pkt, FILE *out){int ret -1;ret avcodec_send_frame(ctx, frame);if(ret <…

微服務-ruoyi-cloud部署

微服務 阿里 阿里nacos 注冊中心&#xff0c;配置中心 spring cloud gateway網關 公共服務 阿里sentinel 面向分布式、多語言異構化服務架構的流量治理組件 阿里seata 是一款開源的分布式事務解決方案 nginx 靜態資源服器 反向代理 ruoyi-cloud部署架構 VM配置 網…

Win7能看到Win10打印機但連接不上

解決方案&#xff1a;方法1.修改注冊表&#xff08;適用于錯誤代碼0x0000011b&#xff09;修改注冊表&#xff08;關鍵步驟&#xff09;&#xff1a;許多情況下&#xff0c;這是由于Win10的一項隱私設置導致的1。在Win10電腦上&#xff0c;按 Win R&#xff0c;輸入 regedit 并…

如何構建靈活、可控、可擴展的多云網絡底座

在 AI 和數字化的浪潮中&#xff0c;越來越多的企業不再滿足于單一云環境&#xff0c;而是同時使用 多家公有云、自建IDC、甚至邊緣節點。這種多云模式雖然靈活&#xff0c;但也帶來了一個新的挑戰&#xff1a;如何讓跨云、跨地的數據流動變得高效、安全、可控&#xff1f;答案…

冪等性設計藝術:在分布式重試風暴中構筑堅不可摧的防線

冪等性設計藝術&#xff1a;在分布式重試風暴中構筑堅不可摧的防線??2023年某支付平臺凌晨故障??&#xff1a;由于網絡抖動導致支付指令重復發送&#xff0c;系統在2分鐘內處理了??17萬筆重復交易??&#xff0c;引發??4.2億資金風險??。事故根本原因&#xff1a;?…

從零開始理解NDT算法的原理及應用

1. 概述 NDT&#xff0c;全稱 Normal Distributions Transform&#xff08;正態分布變換&#xff09;&#xff0c;是一種廣泛使用的點云配準算法&#xff0c;它的核心思想與ICP截然不同&#xff1a;NDT不直接計算點與點之間的對應關系&#xff0c;而是通過概率模型來描述和匹配…

艾體寶案例 | 數據驅動破局:DOMO 如何重塑寵物零售門店的生存法則

某連鎖寵物店店長緊盯著電腦屏幕上的Excel表格&#xff0c;手指機械地在鍵盤上敲擊出“CtrlC/V”的組合鍵——這是她第17次嘗試將三個不同系統的數據拼湊到一起。門店POS機導出的銷售記錄、會員系統的消費偏好、庫存管理的臨期預警&#xff0c;這些本應串聯起門店運營全貌的關鍵…

極飛科技AI智慧農業實踐:3000畝棉田2人管理+產量提15%,精準灌溉與老農操作門檻引討論

在新疆尉犁縣的棉田里&#xff0c;兩架農業無人機正沿著設定航線低空飛行&#xff0c;它們掠過之處&#xff0c;傳感器實時傳回土壤濕度和作物長勢數據——這片3000畝的棉田&#xff0c;如今只需要兩名90后新農人通過手機管理&#xff0c;產量卻比傳統種植模式提高了15%。這不是…

企業級-搭建CICD(持續集成持續交付)實驗手冊

搭建CI/CD(持續集成/持續交付)企業示例 為了讓容器構建鏡像并可以持續集成&#xff0c;可以自動上傳到Harbor倉庫&#xff1b;并且業務主機可以通過CD自動從倉庫中下載鏡像latest版本并實現業務更新。1.環境部署 1.1 環境搭建業務IP域名GitLab172.25.254.50gitlab.dhj.orgJenki…

吃透《數據結構》C 語言版:線性表的類型定義詳解

作為數據結構的入門章節&#xff0c;線性表就像 “地基” 一樣重要&#xff0c;而第二章 2.3 節的 “線性表的類型定義”&#xff0c;更是理解后續操作&#xff08;插入、刪除、查找等&#xff09;的核心前提。今天就結合自己的學習筆記&#xff0c;用通俗的語言拆解這個知識點…

文件系統中的核心數據結構

宏觀上文件系統在kernel的形態文件系統運作流程按照:vfs->磁盤緩存->實際磁盤文件系統->通用塊設備層->io調度層->塊設備驅動層->磁盤。具體流程的詳細展現如下如如何理解文件系統中的數據結構&#xff1f;linux中文件系統還有幾種核心數據結構分別是super_b…

TDengine與StarRocks在技術架構和適用場景上有哪些主要區別?

TDengine 與 StarRocks 作為國產數據庫領域的代表性產品&#xff0c;分別專注于時序數據處理和高性能分析場景&#xff0c;在技術架構和適用場景上存在顯著差異。以下從核心架構、數據模型、性能特點及典型應用場景等方面進行對比分析&#xff1a;&#x1f3d7;? ??一、技術…

Qt事件_xiaozuo

Qt事件Qt 的事件機制是其實現用戶交互和系統響應的核心框架&#xff0c;基于事件驅動模型構建。以下從五個關鍵方面詳細解釋其工作原理和用法&#xff1a;1. 事件&#xff08;QEvent&#xff09;的定義與分類事件本質&#xff1a;事件是 QEvent 類或其子類的實例&#xff0c;用…

運動控制技術:自動化與智能驅動的核心

一、運動控制概述運動控制技術是自動化技術和電氣拖動技術的融合&#xff0c;以工控機、PLC、DSP等為控制器的運動控制技術融合了微電子技術、計算機技術、檢測技術、自動化技術以及伺服控制技術等學科的新成果&#xff0c;在工業生產中起著極為重要的作用。早期的運動控制技術…

鏈表實戰指南:手動實現單鏈表與雙鏈表的接口及OJ挑戰(含完整源碼)

文章目錄一、鏈表的概念二、鏈表的分類三、手動實現單鏈表1.鏈表的初始化2.鏈表的打印3.申請新的節點大小空間4.鏈表的尾插5.鏈表的頭插6.鏈表的尾刪7.鏈表的頭刪8.鏈表的查找9.在指定位置之前插入數據10.在指定位置之后插入數據11.刪除指定節點12.刪除指定節點之后的數據13.銷…

Spring 事件驅動編程初探:用 @EventListener 輕松處理業務通知

一、核心概念與模型Spring 的事件機制是觀察者模式&#xff08;也叫發布-訂閱模型&#xff09;的一種典型實現。它主要由三個核心部分組成&#xff1a;事件 (Event)&#xff1a; 承載信息的對象&#xff0c;通常是某種狀態變化的通知。可以是繼承 ApplicationEvent 的類&#x…

無人機也能稱重?電力巡檢稱重傳感器安裝與使用指南

在無人機電力巡檢中&#xff0c;工程師們常常面臨一個棘手難題&#xff1a;如何精確知道新架設或老舊纜線的實際負重&#xff1f; 傳統依靠老師傅“肉眼估算”的方法不僅風險極高&#xff0c;而且數據極不準確&#xff0c;給電網安全埋下巨大隱患。難道沒有更科學的方法嗎&…

第二階段WinForm-8:特性和反射,加密和解密,單例模式

1_預處理指令 &#xff08;1&#xff09;源代碼指定了程序的定義&#xff0c;預處理指令&#xff08;preprocessor directive&#xff09;指示編譯器如何處理源代碼。例如&#xff0c;在某些情況下&#xff0c;我們希望編譯器能夠忽略一部分代碼&#xff0c;而在其他情況下&am…

基于mac的智能語音處理與應用開發-環境部署

上一次寫文章還是上一次&#xff0c;時隔一年再次開啟學習之路。新機mac沒有開發環境&#xff0c;在gpt老師的指導下開始學習之路。 mac開發環境的部署參考了b站程序員云謙和Clover-You的視頻教程&#xff0c;然后結合自身及gpt老師的幫助現在開始部署。 g老師的&#x1f34e…