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
", NAME, NAME)

    //自动推导类型常量
    const AGE = 18
    fmt.Printf("变量age的数据类型是:%T,其对应的值是:%d
", 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
B = %d
C = %d

", A, B, C)

    //在同一个常量集中,第一个iota等于0,每当iota在新的一行被使用时,它的值会自动加1,下面这种写法是上面写法的简写形式
    const (
        A1 = iota
        B1
        C1
    )
    
    fmt.Printf("A1 = %d
B1 = %d
C1 = %d

", A1, B1, C1)

    //在同一个常量集中,第一个iota等于0,每当iota在新的一行被使用时,它的值会自动加1,但是同一行的iota值是相同的哟~
    const (
        A2     = iota
        B2, C2 = iota, iota
        D2     = iota
    )
    
    fmt.Printf("A2 = %d
B2 = %d
C2 = %d
D2 = %d

", 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)
}

原文地址:https://www.cnblogs.com/yinzhengjie2020/p/12244086.html