重學Go語言之變量與常量的聲明與使用詳解
變量
什么是變量?變量是一塊可以隨時存放數據的內存區(qū)域。在我們申請這塊內存區(qū)域(聲明變量)時,需要指定變量名以及變量的數據類型,數據類型用于說明變量可以存放什么值。
Go是強類型語言,因此Go的變量需要先聲明再使用,且聲明后不可以改變其數據類型。
變量名
- 變量名必須以字母或下劃線開頭。
- 變量名區(qū)分大小寫,比如
Version和version是兩個不同的變量。 - 不能用關鍵字(25個)和保留字(37個)給變量命名。
聲明
Go語言變量有兩種聲明方式,一種是標準的變量聲明,一種是簡短變量聲明。
標準聲明變量的方式
Go聲明一個變量的標準方式是使用關鍵字var,另外要注意的是Go變量的數據類型是放在變量名后面的,這點與其他語言不同:
聲明一個變量:
var i int i = 10
聲明變量的時候給變量賦值
var i int = 10
在聲明不指定數據類型時,Go通過賦值來推斷其數據類型:
var i = 10
同時聲明多個同類型變量
var m,n int //在同一行聲明兩個類型相同的變量
同時聲明多個變量時,也可以賦初始值:
var q,p = "test",10
批量聲明變量:
var(
s string = "test"
r int
t,f bool
)
簡短聲明變量的方式
除了用關鍵字var聲明變量外,Go還支持簡短的局部變量聲明。
變量的簡短方式使用:=,且不需要指定數據類型,Go會根據聲明時賦予的值推斷數據語言:
注意,Go的局部變量聲明后必須使用,否則會報錯。
package main
?
i := 10 //錯誤
?
func main(){
i := 10//根據賦值推斷i為整型
i = 100//重新賦予整型的值
i = "1" //錯誤,不能再賦予字符串
}變量作用域
Go是通過包(package)來組織來代碼,對于在包內聲明的變量(或者函數、常量、結構體等)都是通過變量名的首字母是否大寫來區(qū)分是否包外可見,當首字母大寫時,則其他包可以訪問該變量。
在一個包中定義兩個變量:
package A ? var age int = 10 //包外不可見 ? var Username string = "test" //包外可見
接下來,我們在另一個包中引入上面的包:
package B
?
import A
import "fmt"
?
func main(){
fmt.Println(A.Username)//可以訪問
fmt.Println(A.age) //錯誤,無法訪問小寫字母開頭的變量
}常量
變量的值在運行中可以隨時改變,而常量的值則在賦值后不能發(fā)生改變,常量的值在程序編譯時就已經確定,因此常量在聲明時必須賦值。
Go語言使用const關鍵來聲明一個常量。
const Version = "1.0" const pi float = 3.14
像變量一樣聲明多個常量:
const ( v1 = 100 v2 v3 )
上面這種聲明方式,常量v2和v3的值100。
iota 常量生成器
有時候我們常常需要聲明一些有規(guī)則的常量,比說月份或是星期這樣的枚舉值:
const (
Sunday int = 0
Monday int = 1
Tuesday int = 2
Wednesday int = 3
Thursday int = 4
Friday int = 5
Saturday int = 6
)
上面這種聲明常量的方式就比較麻煩,每個常量值都需要賦值。
而用Go提供了iota常量生成器,在聲明這種有規(guī)則的常量時,可以避免一個一個常量初始化的麻煩:
const (
Sunday int = iota
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
)
在這個例子中,iota所在第一行常量Sunday會被置為0,接下來的常量依次遞增。
使用_符號后,也可以跳過某個值或者中間插入其他值:
const ( s1 = iota //0 22 //1 _ //跳過 s4 //3 s5 //4 s6 = 100 //中間插入某個值 s7 = iota //0 )
iota也可計算后再賦給常量:
const ( January Month = 1 + iota February March April May June July August September October November December )
小結
Go的變量與常量的聲明是把數據類型放在變量名后面的,這點與其他編程語言不同,另外,變量和常量名首字母大小寫決定該變量或常量是否包外可見。
到此這篇關于重學Go語言之變量與常量的聲明與使用詳解的文章就介紹到這了,更多相關Go語言變量 常量內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

