• Go语言常量


    常量是一个简单值的标识符,在程序运行时,永远是只读的,不能修改。

    使用 const 关键字定义常量。常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。

    常量定义

    第一种,显式类型定义

    const name string = "oldboy"

    第二种,隐式类型定义,一个未指定类型的常量由上下文来决定其类型

    const age = 18

    第三种,一次性定义多个常量

    const Mon, Tues, Wed, Thur, Fri, Sat, Sun = 1, 2, 3, 4, 5, 6, 7
    
    const (
        name = "oldboy"
        age  = 18
    )

    第四种,常量可以用len(),cap(),unsafe.Sizeof()函数计算表达式的值。常量表达式中,函数必须是内置函数,否则编译不过:

    const (
        a = "abc"
        b = len(a)
        c = unsafe.Sizeof(b)
    )
    //
    unsafe.Sizeof 计算结构体大小
    
    

    常量技巧

    未使用的局部常量不会引发编译错误。实例如下:

    package main
    
    func main() {
        const str = "The old boy welcomes you."
    }

    在常量组中,如不提供类型和初始化值,那么视作与上一个常量相同。实例如下:

    package main
    
    import (
        "fmt"
    )
    
    func main() {
        const (
            name = "oldboy"
            nickname
        )
        fmt.Printf("name : %s, nickname : %s
    ", name, nickname)
    }

    运行结果:

    name : oldboy, nickname : oldboy

    特殊常量

    特殊常量,iota,可以认为是一个可以被编译器修改的常量。
    在每一个const关键字出现时,被重置为0,然后再下一个const出现之前,每出现一次iota,其所代表的数字会自动增加1。

    关键字 iota 定义常量组中从 0 开始按行计数的自增枚举值。实例如下:

    package main
    
    import (
        "fmt"
    )
    
    const (
        Sunday = iota
        Monday
        Tuesday
        Wednesday
        Thursday
        Friday
        Saturday
    )
    
    func main() {
        fmt.Println(Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday)
    }

    运行结果:

    0 1 2 3 4 5 6

    在同一常量组中,可以提供多个 iota,它们各自增长。实例如下:

    package main
    
    import (
        "fmt"
    )
    
    const (
        A1, B1 = iota, iota << 10
        A2, B2
    )
    
    func main() {
        fmt.Println(A1, B1, A2, B2)
    }

    运行结果:

    0 0 1 1024

    如果 iota 自增被打断,须显式恢复。实例如下:

    package main
    
    import (
        "fmt"
    )
    
    const (
        Sun = iota
        Mon
        Tues
        Wed = "Wednesday"
        Thur
        Fri = iota
        Sat
    )
    
    func main() {
        fmt.Println(Sun, Mon, Tues, Wed, Thur, Fri, Sat)
    }

    运行结果:

    0 1 2 Wednesday Wednesday 5 6
  • 相关阅读:
    常用经典SQL语句
    怎样找到PB打包所需要的dll和pbd文件?
    C#多线程参数传递
    Sqlserver 常用日期时间函数
    SQL Server:如何判断变量或字段是否为NULL
    用c#开发可供PB调用的COM组件
    ROW_NUMBER() OVER函数的基本用法用法
    SQL Server数据导入导出工具BCP详解
    IE下 Window.Open(url,name), name参数空格、符号问题
    数据库设计系列[05]多公司加入权限系统
  • 原文地址:https://www.cnblogs.com/jiangchunsheng/p/10702886.html
Copyright © 2020-2023  润新知