定義+初始化。
創(chuàng)新互聯(lián)主要企業(yè)基礎(chǔ)官網(wǎng)建設(shè),電商平臺(tái)建設(shè),移動(dòng)手機(jī)平臺(tái),微信小程序等一系列專為中小企業(yè)定制網(wǎng)站產(chǎn)品體系;應(yīng)對中小企業(yè)在互聯(lián)網(wǎng)運(yùn)營的各種問題,為中小企業(yè)在互聯(lián)網(wǎng)的運(yùn)營中保駕護(hù)航。
舉個(gè)例子
var num int //定義一個(gè)整形變量num,默認(rèn)為0
var number int = 21 //定義一個(gè)整型變量number,并賦值為21
在編程語言中標(biāo)識符就是程序員定義的具有特殊意義的詞,比如變量名、常量名、函數(shù)名等等。 Go語言中標(biāo)識符由字母數(shù)字和_(下劃線)組成,并且只能以字母和_開頭。
Go語言里面定義變量有多種方式。
使用var關(guān)鍵字是Go最基本的定義變量方式,與C語言不同的是Go把變量類型放在變量名后面:
//定義一個(gè)名稱為“variableName”,類型為"type"的變量
var variableName type
定義多個(gè)變量
//定義三個(gè)類型都是“type”的變量
var vname1, vname2, vname3 type
定義變量并初始化值
//初始化“variableName”的變量為“value”值,類型是“type”
var variableName type = value
2021-10-22
每一個(gè)變量(常量、類型或函數(shù))在程序中都有一定的作用范圍。稱之為作用域。
Go語言在編譯時(shí)會(huì)檢查每一個(gè)變量是否使用過,未使用過的變量就會(huì)編譯錯(cuò)誤。
根據(jù)變量定義位置的不同,可以分為以下三個(gè)類型:
在函數(shù)體內(nèi)被聲明的變量稱之為局部變量,作用在函數(shù)體內(nèi),函數(shù)的參數(shù)和返回值變量都屬于局部變量。局部變量不會(huì)一直存在,在函數(shù)被調(diào)用時(shí)存在,函數(shù)調(diào)用結(jié)束后變量就會(huì)被銷毀,即生命周期。
例子:其中a、b均為局部變量,只會(huì)在main函數(shù)內(nèi)有效
在函數(shù)體外被聲明的變量稱之為全局變量,作用于所有源文件。不包含這個(gè)全局變量的源文件需要使用"import"關(guān)鍵字引入全局變量所在的源文件之后才能使用這個(gè)全局變量。
全局變量聲明必須以 var 關(guān)鍵字開頭,如果想要在外部包中使用全局變量的首字母必須大寫。
例如:global為全局在main2和main函數(shù)中都能使用
函數(shù)名后面的小括號里定義的變量, 用于接受來自調(diào)用函數(shù)的參數(shù)。用于接收調(diào)用該函數(shù)時(shí)傳入的參數(shù)。
例如:下面的例子中,第十七行a、b為sum函數(shù)定義的形參,用于傳入main函數(shù)中的AF、BF
可以通過嘗試分配,要求編譯器檢查類型T是否實(shí)現(xiàn)了接口I:
type T struct{}
var _ I = T{} // Verify that T implements I.
_ = x // evaluate x but ignore it
_是一個(gè)特殊的標(biāo)識符,可以為其分配任何內(nèi)容,但永遠(yuǎn)不要讀取。在第一個(gè)示例中,
var _ I = T{}
無法訪問此變量,因此將從結(jié)果程序中對其進(jìn)行優(yōu)化。但是,如果類型T不能分配給interface
,則可能會(huì)導(dǎo)致編譯錯(cuò)誤I。因此,在這種情況下,它被用作關(guān)于類型的靜態(tài)斷言。
第二種情況更常見。盡管丟棄函數(shù)調(diào)用的結(jié)果似乎很奇怪,但在具有多個(gè)返回的函數(shù)中它可能更有意義。考慮一個(gè)foo返回兩個(gè)值的函數(shù),但是只對第一個(gè)感興趣?可以使用_忽略第二個(gè):
a, _ = foo()
通過創(chuàng)建另一個(gè)變量來保存不需要的返回值,可以得到相同的效果,但是此功能意味著不必?fù)?dān)心為其選擇唯一的名稱。