網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
1.標(biāo)識(shí)符
在編程語(yǔ)言中標(biāo)識(shí)符就是程序員定義的具有特殊意義的詞,比如變量名,常量名,函數(shù) .bc,_123,a1232
2.關(guān)鍵字
關(guān)鍵字是指編程語(yǔ)言中預(yù)先定義好的具有特殊含義的標(biāo)識(shí)符,關(guān)鍵字和保留字都不建議用作變量名
Go語(yǔ)言中有25個(gè)關(guān)鍵字
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
還有37個(gè)保留字
Constants: ? ?true ?false ?iota ?nil
? ? ? ? Types: ? ?int ?int8 ?int16 ?int32 ?int64 ?
? ? ? ? ? ? ? ? ? uint ?uint8 ?uint16 ?uint32 ?uint64 ?uintptr
? ? ? ? ? ? ? ? ? float32 ?float64 ?complex128 ?complex64
? ? ? ? ? ? ? ? ? bool ?byte ?rune ?string ?error? ? Functions: ? make ?len ?cap ?new ?append ?copy ?close ?delete
? ? ? ? ? ? ? ? ?complex ?real ?imag
? ? ? ? ? ? ? ? ?panic ?recover
3.變量
變量的功能是存儲(chǔ)數(shù)據(jù),不同的變量保存的數(shù)據(jù)類型可能會(huì)不一樣,經(jīng)過(guò)半個(gè)多世紀(jì)的發(fā)展,編程語(yǔ)言已經(jīng)基本形成了一套固定的類型,常見(jiàn)變量的數(shù)據(jù)類型有:整型、浮點(diǎn)型、布爾型等
Go語(yǔ)言中的每一個(gè)變量都有自己的類型,并且變量必須經(jīng)過(guò)聲明才能開(kāi)始使用
3.1 Go語(yǔ)言中變量的聲明
聲明格式
var 變量名 變量類型
變量聲明以關(guān)鍵字var開(kāi)頭,變量類型放在變量的后面,行尾無(wú)需分號(hào),舉個(gè)例子
var name string var age int var isOk bool
3.2 批量聲明
每聲明一個(gè)變量就需要寫(xiě)var關(guān)鍵字會(huì)比較繁瑣,go語(yǔ)言中還支持批量變量聲明:
var ( a string b int c bool d float32 )
3.3 變量的初始化
Go語(yǔ)言在聲明變量的時(shí)候,會(huì)自動(dòng)對(duì)變量對(duì)應(yīng)的內(nèi)存區(qū)域進(jìn)行初始化操作,每個(gè)變量會(huì)被初始化成其類型的默認(rèn)值。例如整數(shù)和浮點(diǎn)型變量的默認(rèn)值為0,字符串變量的默認(rèn)值為空字符串,布爾型變量默認(rèn)為false。切片、函數(shù)、指針變量的默認(rèn)為nil
func main() { var ( test01 string test02 int test03 bool test04 float32 ) fmt.Println(test01, test02, test03, test04) }
0 false 0
當(dāng)然我們也可在聲明變量的時(shí)候?yàn)槠渲付ǔ跏贾怠W兞砍跏蓟臉?biāo)準(zhǔn)格式如下:
var 變量名 類型=表達(dá)式
例子
var name string="wql" var age int =18
或者一次初始化多個(gè)變量
var name,age="wql",20
有時(shí)我們會(huì)將變量的類型省略,這個(gè)時(shí)候編譯器會(huì)根據(jù)等號(hào)右邊的值來(lái)推導(dǎo)變量的類型完成初始化
var name = "wql" var age = 18
3.4 短變量聲明
在函數(shù)內(nèi)部,可以使用更簡(jiǎn)略的:=方式聲明并初始化變量
package main //告訴程序需要fmt包,fmt具有打印輸出的函數(shù) import "fmt" var n int func main() { b := 123 fmt.Println(b) }
3.5匿名變量
在使用多重賦值時(shí),如果想要忽略某個(gè)值,可以使用匿名變量(anonymous variable)。匿名變量用一個(gè)下劃線表示例如
package main //告訴程序需要fmt包,fmt具有打印輸出的函數(shù) import "fmt" func main() { x, _ := foo() _, y := foo() fmt.Println("x=", x) fmt.Println("y=", y) } func foo() (int, string) { return 10, "wql" }
123 123 hello wql x= 10 y= wql
匿名變量不占用命名空間,不會(huì)分配內(nèi)存,所以匿名變量之間不存在重復(fù)聲明
注意事項(xiàng)
- 函數(shù)外的每個(gè)語(yǔ)句必須以關(guān)鍵字開(kāi)始(var、const、func等)
- :=不能用在函數(shù)外
- _多用于占位,表示忽略值
4.常量
相對(duì)于變量,常量時(shí)恒定不變的值,多用于定義程序運(yùn)行期間不會(huì)改變的哪些值。常量的聲明和變量的聲明非常類似,知識(shí)把var換成了const,常量在定義的時(shí)候必須賦值
?? ?const pi = 3.12
?? ?const e = 2.7
?? ?fmt.Println(pi, e)
1
2
3
在聲明了pi和e這兩個(gè)常量之后,在整個(gè)程序運(yùn)行期間它們的值都不能再發(fā)生變化了
多個(gè)常量也可以一起聲明
const( p1 = 2 p2 = 4 )
const同時(shí)聲明多個(gè)常量時(shí),如果省略了值則表示和上面一行的值相同,例如
const( p3 = 200 p4 p5 )
上面的實(shí)例中p3,p4,p5的值都是200
5.iota
iota是go語(yǔ)言的常量計(jì)數(shù)器,只能在常量的表達(dá)式中使用
iota在const關(guān)鍵字出現(xiàn)時(shí)將被重置為0,const中每新增一行常量聲明將使iota計(jì)數(shù)一次,iota可以理解為const語(yǔ)句塊中的行索引,使用iota能簡(jiǎn)化定義,在定義枚舉時(shí)很有用
const ( n1 = iota //0 n2 //1 n3 //2 n4 //3 ) fmt.Println(n1, n2, n3, n4)
0 1 2 3
`幾個(gè)常見(jiàn)的iota實(shí)例:
`使用下劃線跳過(guò)某些值
const ( n1 = iota //0 n2 //1 _ n4 //3 )
iota聲明中間插隊(duì) const ( n1 = iota //0 n2 = 100 //100 n3 = iota //2 n4 //3 )
也就是說(shuō)有無(wú)初始值,iota都+1,常量有初始值就是初始值,沒(méi)有初始值為iota+1
const ( _ = iota KB = 1 << (10 * iota) MB = 1 << (10 * iota) GB = 1 << (10 * iota) TB = 1 << (10 * iota) PB = 1 << (10 * iota) )
多個(gè)iota定義在一行
const ( a, b = iota + 1, iota + 2 //1,2 c, d //2,3 e, f //3,4 )
所以iota有兩個(gè)特點(diǎn)
- 當(dāng)遇見(jiàn)const出現(xiàn)被置為0
- 每新增一行就+1
總結(jié)
原文鏈接:https://blog.csdn.net/wenwenaier/article/details/125130639
相關(guān)推薦
- 2023-11-16 Linux查看某目錄下的文件個(gè)數(shù)
- 2022-08-22 Python利用watchdog模塊監(jiān)控文件變化_python
- 2022-05-24 C#?連接本地?cái)?shù)據(jù)庫(kù)的實(shí)現(xiàn)示例_C#教程
- 2022-10-14 clickhouse連hadoop集群配置(帶kerberos認(rèn)證)
- 2022-06-06 typescript中abstractClass(抽象類)、extends、abstract
- 2022-12-04 python亂序字符串排序的實(shí)現(xiàn)方式_python
- 2022-09-24 python實(shí)現(xiàn)梯度下降求解邏輯回歸_python
- 2022-03-17 Android跳轉(zhuǎn)三方應(yīng)用實(shí)例代碼_Android
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門(mén)
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支