• Golang基础语法-常量


    基本语法—常量constant

    一、常量的使用

    1.1 常量声明

    常量是一个简单值的标识符,在程序运行时,不会被修改的量。

    const identifier [type] = value
    
    显式类型定义: const b string = "abc"
    隐式类型定义: const b = "abc"
    
    package main
    
    import "fmt"
    
    func main() {
       const LENGTH int = 10
       const WIDTH int = 5   
       var area int
       const a, b, c = 1, false, "str" //多重赋值
    
       area = LENGTH * WIDTH
       fmt.Printf("面积为 : %d", area)
       println()
       println(a, b, c)   
    }
    

    运行结果:

    面积为 : 50
    1 false str
    

    常量可以作为枚举,常量组

    const (
        Unknown = 0
        Female = 1
        Male = 2
    )
    

    常量组中如不指定类型和初始化值,则与上一行非空常量右值相同

    package main
    
    import (
    	"fmt"
    )
    
    func main() {
    	const (
    		x uint16 = 16
    		y
    		s = "abc"
    		z
    	)
    	fmt.Printf("%T,%v
    ", y, y)
    	fmt.Printf("%T,%v
    ", z, z)
    }
    

    运行结果:

    uint16,16
    string,abc
    

    常量的注意事项:

    • 常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型

    • 不曾使用的常量,在编译的时候,是不会报错的

    • 显示指定类型的时候,必须确保常量左右值类型一致,需要时可做显示类型转换。这与变量就不一样了,变量是可以是不同的类型值

    1.2 iota

    iota,特殊常量,可以认为是一个可以被编译器修改的常量

    iota 可以被用作枚举值:

    const (
        a = iota
        b = iota
        c = iota
    )
    

    第一个 iota 等于 0,每当 iota 在新的一行被使用时,它的值都会自动加 1;所以 a=0, b=1, c=2 可以简写为如下形式:

    const (
        a = iota
        b
        c
    )
    

    iota 用法

    package main
    
    import "fmt"
    
    func main() {
        const (
                a = iota   //0
                b          //1
                c          //2
                d = "ha"   //独立值,iota += 1
                e          //"ha"   iota += 1
                f = 100    //iota +=1
                g          //100  iota +=1
                h = iota   //7,恢复计数
                i          //8
        )
        fmt.Println(a,b,c,d,e,f,g,h,i)
    }
    

    运行结果:

    0 1 2 ha ha 100 100 7 8
    

    如果中断iota自增,则必须显式恢复。且后续自增值按行序递增

    自增默认是int类型,可以自行进行显示指定类型

    数字常量不会分配存储空间,无须像变量那样通过内存寻址来取值,因此无法获取地址

  • 相关阅读:
    Java过滤器与SpringMVC拦截器的差异学习笔记
    java拦截器(Interceptor)学习笔记
    java监听器(Listener)学习笔记
    java过滤器Filter笔记
    java反射学习笔记
    程序员大佬推荐的java学习路线
    jmeter java请求
    java代码实现rabbitMQ请求
    fatjar eclipse4.4 java项目的jar包一起打包 net.sf.fjep.fatjar_0.0.32.jar
    jmeter参数化之CSV Data Set Config
  • 原文地址:https://www.cnblogs.com/walker1024/p/14328146.html
Copyright © 2020-2023  润新知