溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Go語(yǔ)言變量與常量如何聲明與使用

發(fā)布時(shí)間:2023-03-02 11:35:24 來(lái)源:億速云 閱讀:104 作者:iii 欄目:開(kāi)發(fā)技術(shù)

本文小編為大家詳細(xì)介紹“Go語(yǔ)言變量與常量如何聲明與使用”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“Go語(yǔ)言變量與常量如何聲明與使用”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來(lái)學(xué)習(xí)新知識(shí)吧。

    變量

    什么是變量?變量是一塊可以隨時(shí)存放數(shù)據(jù)的內(nèi)存區(qū)域。在我們申請(qǐng)這塊內(nèi)存區(qū)域(聲明變量)時(shí),需要指定變量名以及變量的數(shù)據(jù)類(lèi)型,數(shù)據(jù)類(lèi)型用于說(shuō)明變量可以存放什么值。

    Go是強(qiáng)類(lèi)型語(yǔ)言,因此Go的變量需要先聲明再使用,且聲明后不可以改變其數(shù)據(jù)類(lèi)型。

    變量名

    • 變量名必須以字母或下劃線開(kāi)頭。

    • 變量名區(qū)分大小寫(xiě),比如Versionversion是兩個(gè)不同的變量。

    • 不能用關(guān)鍵字(25個(gè))和保留字(37個(gè))給變量命名。

    聲明

    Go語(yǔ)言變量有兩種聲明方式,一種是標(biāo)準(zhǔn)的變量聲明,一種是簡(jiǎn)短變量聲明。

    標(biāo)準(zhǔn)聲明變量的方式

    Go聲明一個(gè)變量的標(biāo)準(zhǔn)方式是使用關(guān)鍵字var,另外要注意的是Go變量的數(shù)據(jù)類(lèi)型是放在變量名后面的,這點(diǎn)與其他語(yǔ)言不同:

    聲明一個(gè)變量:

    var i int
    i = 10

    聲明變量的時(shí)候給變量賦值

    var i int = 10

    在聲明不指定數(shù)據(jù)類(lèi)型時(shí),Go通過(guò)賦值來(lái)推斷其數(shù)據(jù)類(lèi)型:

    var i = 10

    同時(shí)聲明多個(gè)同類(lèi)型變量

    var m,n int //在同一行聲明兩個(gè)類(lèi)型相同的變量

    同時(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ù)類(lèi)型,Go會(huì)根據(jù)聲明時(shí)賦予的值推斷數(shù)據(jù)語(yǔ)言:

    注意,Go的局部變量聲明后必須使用,否則會(huì)報(bào)錯(cuò)。

    package main 
    
    i := 10 //錯(cuò)誤
    
    func main(){
        i := 10//根據(jù)賦值推斷i為整型
        i = 100//重新賦予整型的值
        i = "1" //錯(cuò)誤,不能再賦予字符串
    }

    變量作用域

    Go是通過(guò)包(package)來(lái)組織來(lái)代碼,對(duì)于在包內(nèi)聲明的變量(或者函數(shù)、常量、結(jié)構(gòu)體等)都是通過(guò)變量名的首字母是否大寫(xiě)來(lái)區(qū)分是否包外可見(jiàn),當(dāng)首字母大寫(xiě)時(shí),則其他包可以訪問(wèn)該變量。

    在一個(gè)包中定義兩個(gè)變量:

    package A
    
    var age int = 10 //包外不可見(jiàn)
    
    var Username string = "test" //包外可見(jiàn)

    接下來(lái),我們?cè)诹硪粋€(gè)包中引入上面的包:

    package B
    
    import A
    import "fmt"
    
    func main(){
      fmt.Println(A.Username)//可以訪問(wèn)
      fmt.Println(A.age) //錯(cuò)誤,無(wú)法訪問(wèn)小寫(xiě)字母開(kāi)頭的變量
    }

    常量

    變量的值在運(yùn)行中可以隨時(shí)改變,而常量的值則在賦值后不能發(fā)生改變,常量的值在程序編譯時(shí)就已經(jīng)確定,因此常量在聲明時(shí)必須賦值。

    Go語(yǔ)言使用const關(guān)鍵來(lái)聲明一個(gè)常量。

    const Version = "1.0"
    
    const pi float = 3.14

    像變量一樣聲明多個(gè)常量:

    const (
    	v1 = 100
    	v2
    	v3
    )

    上面這種聲明方式,常量v2v3的值100。

    iota 常量生成器

    有時(shí)候我們常常需要聲明一些有規(guī)則的常量,比說(shuō)月份或是星期這樣的枚舉值:

    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,接下來(lái)的常量依次遞增。

    使用_符號(hào)后,也可以跳過(guò)某個(gè)值或者中間插入其他值:

    const (
    		s1 = iota //0
    		22        //1
    		_         //跳過(guò)
    		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
    )

    讀到這里,這篇“Go語(yǔ)言變量與常量如何聲明與使用”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過(guò)才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。

    向AI問(wèn)一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI