Golang的常量定義及使用案例


         Golang的常量定義及使用案例

                            作者:尹正傑

版權聲明:原創作品,謝絕轉載!否則將追究法律責任。

 

 

一.常量的定義

package main

import (
    "fmt"
)

func main() {
    /*
        什么是常量:
            在程序運行過程中其值不可以發生改變的量稱為常量。
            比如游戲里的裝備價格在整個程序運行中都是不允許發生改變的。

        在golang中有兩種定義變量的方式,分別為"常量賦值",“自動推導類型常量”。
            1>.常量賦值語法格式:
                const 常量名稱 數據類型 = 值
            2>.自動推導類型常量語法格式(注意,常量賦值不要使用":="):
                const 常量名稱 = 值

        Go語言中使用常量注意事項:
            1>.常量一經定義不可修改,比如再次賦值是不允許的;
            2>.不可以獲取常量的內存地址(在Go語言中在變量前使用"&"可以獲取變量的內存地址);
            3>.常量和變量在不同的內存存儲區域:
                (1).常量存儲在數據區(全局區)下面的常量區
                (2)變量在棧區進行存儲,但是在Go語言中將堆和棧進行統一管理,稱為虛擬內存區域
            4>.為了將常量和變量有所區分,一般實際開發中,我們建議會將常量的名稱所有字母均大寫;
    */

    //常量賦值
    const NAME string = "尹正傑"
    fmt.Printf("變量na0me的數據類型是:%T,其對應的值是:%s\n", NAME, NAME)

    //自動推導類型常量
    const AGE = 18
    fmt.Printf("變量age的數據類型是:%T,其對應的值是:%d\n", AGE, AGE)

}

 

二.常量集(iota枚舉)

1>.使用常量集的注意事項

  常量聲明可以使用iota常量生成器初始化,它用於生成一組以相似規則初始化的常量,但是不用每行都寫一遍初始化表達式。

  溫馨提示:
    1>.在同一個const聲明常量集中,在第一個聲明的常量所在的行,iota將會被賦值為0,然后在每一個有常量聲明的行加1;
    2>.在同一個常量集中,在同一行的iota的值相同;
    3>.在同一個常量集中,可以自定義常量集中的值,但不推薦和iota常量生成器混用,容易搞不清楚iota的值是多少;
    4>.如果不使用常量集,即單獨定義常量,那iota的值都為0,定義常量集的好處就是在定義多個常量時不用每行都得寫const關鍵字;

2>.使用iota常量生成器為常量集賦值案例

package main

import (
    "fmt"
)

func main() {

    //在同一個常量集中,第一個iota等於0,每當iota在新的一行被使用時,它的值會自動加1
    const (
        A = iota
        B = iota
        C = iota
    )
    
    fmt.Printf("A = %d\nB = %d\nC = %d\n\n", A, B, C)

    //在同一個常量集中,第一個iota等於0,每當iota在新的一行被使用時,它的值會自動加1,下面這種寫法是上面寫法的簡寫形式
    const (
        A1 = iota
        B1
        C1
    )
    
    fmt.Printf("A1 = %d\nB1 = %d\nC1 = %d\n\n", A1, B1, C1)

    //在同一個常量集中,第一個iota等於0,每當iota在新的一行被使用時,它的值會自動加1,但是同一行的iota值是相同的喲~
    const (
        A2     = iota
        B2, C2 = iota, iota
        D2     = iota
    )
    
    fmt.Printf("A2 = %d\nB2 = %d\nC2 = %d\nD2 = %d\n\n", A2, B2, C2, D2)
    
}

3>.自定義常量集的值案例

package main

import (
    "fmt"
)

func main() {
    const (
        RED    = 1
        ORANGE = 2
        YELLOW = 4
        GREEN  = 8
        CYAN   = 16
        BLUE   = 32
        VIOLET = 64
    )

    fmt.Println("赤橙黃綠青藍紫對應的標記為:", RED, ORANGE, YELLOW, GREEN, CYAN, BLUE, VIOLET)
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM