重學(xué)Go語言之變量與常量的聲明與使用詳解
變量
什么是變量?變量是一塊可以隨時(shí)存放數(shù)據(jù)的內(nèi)存區(qū)域。在我們申請(qǐng)這塊內(nèi)存區(qū)域(聲明變量)時(shí),需要指定變量名以及變量的數(shù)據(jù)類型,數(shù)據(jù)類型用于說明變量可以存放什么值。
Go是強(qiáng)類型語言,因此Go的變量需要先聲明再使用,且聲明后不可以改變其數(shù)據(jù)類型。
變量名
- 變量名必須以字母或下劃線開頭。
- 變量名區(qū)分大小寫,比如
Version和version是兩個(gè)不同的變量。 - 不能用關(guān)鍵字(25個(gè))和保留字(37個(gè))給變量命名。
聲明
Go語言變量有兩種聲明方式,一種是標(biāo)準(zhǔn)的變量聲明,一種是簡(jiǎn)短變量聲明。
標(biāo)準(zhǔn)聲明變量的方式
Go聲明一個(gè)變量的標(biāo)準(zhǔn)方式是使用關(guān)鍵字var,另外要注意的是Go變量的數(shù)據(jù)類型是放在變量名后面的,這點(diǎn)與其他語言不同:
聲明一個(gè)變量:
var i int i = 10
聲明變量的時(shí)候給變量賦值
var i int = 10
在聲明不指定數(shù)據(jù)類型時(shí),Go通過賦值來推斷其數(shù)據(jù)類型:
var i = 10
同時(shí)聲明多個(gè)同類型變量
var m,n int //在同一行聲明兩個(gè)類型相同的變量
同時(shí)聲明多個(gè)變量時(shí),也可以賦初始值:
var q,p = "test",10
批量聲明變量:
var(
s string = "test"
r int
t,f bool
)
簡(jiǎn)短聲明變量的方式
除了用關(guān)鍵字var聲明變量外,Go還支持簡(jiǎn)短的局部變量聲明。
變量的簡(jiǎn)短方式使用:=,且不需要指定數(shù)據(jù)類型,Go會(huì)根據(jù)聲明時(shí)賦予的值推斷數(shù)據(jù)語言:
注意,Go的局部變量聲明后必須使用,否則會(huì)報(bào)錯(cuò)。
package main
?
i := 10 //錯(cuò)誤
?
func main(){
i := 10//根據(jù)賦值推斷i為整型
i = 100//重新賦予整型的值
i = "1" //錯(cuò)誤,不能再賦予字符串
}變量作用域
Go是通過包(package)來組織來代碼,對(duì)于在包內(nèi)聲明的變量(或者函數(shù)、常量、結(jié)構(gòu)體等)都是通過變量名的首字母是否大寫來區(qū)分是否包外可見,當(dāng)首字母大寫時(shí),則其他包可以訪問該變量。
在一個(gè)包中定義兩個(gè)變量:
package A ? var age int = 10 //包外不可見 ? var Username string = "test" //包外可見
接下來,我們?cè)诹硪粋€(gè)包中引入上面的包:
package B
?
import A
import "fmt"
?
func main(){
fmt.Println(A.Username)//可以訪問
fmt.Println(A.age) //錯(cuò)誤,無法訪問小寫字母開頭的變量
}常量
變量的值在運(yùn)行中可以隨時(shí)改變,而常量的值則在賦值后不能發(fā)生改變,常量的值在程序編譯時(shí)就已經(jīng)確定,因此常量在聲明時(shí)必須賦值。
Go語言使用const關(guān)鍵來聲明一個(gè)常量。
const Version = "1.0" const pi float = 3.14
像變量一樣聲明多個(gè)常量:
const ( v1 = 100 v2 v3 )
上面這種聲明方式,常量v2和v3的值100。
iota 常量生成器
有時(shí)候我們常常需要聲明一些有規(guī)則的常量,比說月份或是星期這樣的枚舉值:
const (
Sunday int = 0
Monday int = 1
Tuesday int = 2
Wednesday int = 3
Thursday int = 4
Friday int = 5
Saturday int = 6
)
上面這種聲明常量的方式就比較麻煩,每個(gè)常量值都需要賦值。
而用Go提供了iota常量生成器,在聲明這種有規(guī)則的常量時(shí),可以避免一個(gè)一個(gè)常量初始化的麻煩:
const (
Sunday int = iota
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
)
在這個(gè)例子中,iota所在第一行常量Sunday會(huì)被置為0,接下來的常量依次遞增。
使用_符號(hào)后,也可以跳過某個(gè)值或者中間插入其他值:
const ( s1 = iota //0 22 //1 _ //跳過 s4 //3 s5 //4 s6 = 100 //中間插入某個(gè)值 s7 = iota //0 )
iota也可計(jì)算后再賦給常量:
const ( January Month = 1 + iota February March April May June July August September October November December )
小結(jié)
Go的變量與常量的聲明是把數(shù)據(jù)類型放在變量名后面的,這點(diǎn)與其他編程語言不同,另外,變量和常量名首字母大小寫決定該變量或常量是否包外可見。
到此這篇關(guān)于重學(xué)Go語言之變量與常量的聲明與使用詳解的文章就介紹到這了,更多相關(guān)Go語言變量 常量?jī)?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Go語言單元測(cè)試模擬服務(wù)請(qǐng)求和接口返回
這篇文章主要為大家介紹了Go語言單元測(cè)試模擬服務(wù)請(qǐng)求和接口返回示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
Golang 數(shù)據(jù)庫操作(sqlx)和不定字段結(jié)果查詢
本文主要介紹了Golang 數(shù)據(jù)庫操作(sqlx)和不定字段結(jié)果查詢,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09
Golang Gin框架實(shí)現(xiàn)文件下載功能的示例代碼
本文主要介紹了Golang Gin框架實(shí)現(xiàn)文件下載功能的示例代碼,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12

