golang iota 笔记

文章目录 (?) [+]

    关键字 iota 用来声明枚举 ,默认开始值为 0 ,const 中每增加一行加 1 。

    package main
    
    import "fmt"
    
    const (
        a = iota   // a = 0
        _          // 略过 iota 为 1 的情况
        b          // 常量声明省略值时默认使用 iota 自增 b = 2
        c    = "C" // 虽然此行未使用 iota 但此行 iota 依然自增
        d          // 继承 c 的值 d = "C"
        e, f = iota, iota // iota 在同一行值相同 e = 5, f = 5
        g    = iota       // 此行必须重新指定 iota 以自增,否则编译不通过 g = 6
        h                 // h = 7
    )
    
    const (
        u = "hello"
        v = iota // iota 每遇到一个 const 关键字就会重置为 0, const 中每新增一行常量声明将使 iota 计数一次 v = 1
    )
    
    const (
        // iota 参与运算
        B  = 1 << (10 * iota) // 1 << 0
        KB                    // 1 << 10 = 1024
        MB                    // 1 << 20 = 1024 * 1024
        GB                    // 1 << 30 = 1024 * 1024 * 1024
        TB
        PB
    )
    
    type Level int
    
    const (
    	Best Level = iota
        Nice
        Normal
        Bad
    )
    
    // 使用 fmt.Printf()、fmt.Print() 和 fmt.Println() 会自动使用 String() 方法
    func (l Level) String() string {
        return [...]string{"Best", "Nice", "Normal", "Bad"}[l]
    }
    
    func main() {
        fmt.Println(a, b, c, d, e, f, g, h, v)
        fmt.Println(B, KB, MB, GB, TB, PB, 1<<20)
        fmt.Println(Normal)
    }
    /*
    0 2 C C 5 5 6 7 1
    1 1024 1048576 1073741824 1099511627776 1125899906842624 1048576
    Normal
    */


    本文标题:golang iota 笔记
    本文链接:https://lanseyujie.com/post/golang-iota.html
    版权声明:本文使用「署名-非商业性使用-相同方式共享」创作共享协议,转载或使用请遵守署名协议。
    点赞 0 分享 0