• go-05-常量


    一、const

    1 常量介绍

    常量就是在整个程序中,一个变量的值始终不能被改变或者再次声明。
    golang 中使用 const 关键字声明一个常量。

    2 声明单个常量

    const pi = 3.1415926
    
    • 1

    3 声明多个常量

    const (
        codeOk int = 200
        conde404 = 404
    )
    
    • 1
    • 2
    • 3
    • 4

    4 值的继承

    当声明常量时,若果后面的常量没有指定具体的值,就会继承上一个常量的值。

    package main
    
    import "fmt"
    
    const (
        a = "hello"  // a -> hello
        b            // b -> hello
    )
    func main(){
        fmt.Println(a,b)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    二、iota

    1 介绍

    iota 是常量的计数器,也是一个 go 中的关键字。

    iota 必须和 const 配合使用。

    iota 在每一个 const 中第一次出现时,iota 的值是 0 ,之后在同一个 const 中只要每声明一行常量,iota 的值就会被递增 1。

    2 声明单个

    package main
    
    import "fmt"
    
    const h = iota
    
    func main(){
        fmt.Println(h) // h -> 0
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    代码解读:
    const h = iota 表示把 iota 的值赋值给了 h 这个常量,那 h 的值也就是 iota 的值
    const 中第一次出现了 iota ,此时 iota 的值是 0

    3 声明多个

    const(
    	a1 = iota  // 0
    	a2         // 1
    	a3         // 2
    )
    
    • 1
    • 2
    • 3
    • 4
    • 5

    代码解读:
    a1 = iota 表示把 iota 的值赋值给了 h 这个常量,那 h 的值也就是 iota 的值, 此时 iota 由于是这个 const 代码块中第一次出现,因此其值是 0,那 a1 的值也是 0。
    a2 在 const 中 a2 没有指定具体的值,其值就会继承上一行常量的值,上一行常量 a1 的值是 iota, 但此时 a2 已经是这个 const 代码块中的第二行声明一个常量了,iota 的值就会递增,也就是 1,因此 a2 的值也是 1。
    a3a2 是同一个道理。

    3 可以使用 _ 来接收那些希望跳过递增的数值

    const(
    	b1 = iota  // 0
    	_          // 1
    	b3         // 2
    )
    
    • 1
    • 2
    • 3
    • 4
    • 5

    4 可以和普通的常量混合使用

    const(
    	c1 = iota // iota -> 0, c1 -> 0
    	c2        // iota -> 1, c2 -> 1
    	c3 = 10   // iota -> 2, c3 -> 10
    	c4        // c4 的值是 10,iota 的值 3
    	_         // _  的值是 10,iota 的值 4
    	c5        // c5 的值是 10,iota 的值 5
    	c6 = iota // 此时 c6 的值被赋值为 iota, 而此时 iota 的值是 6,所以 c6的值也是 6
    	c7        // 同理 c7
    )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    5 iota 如果出现在同一行,iota 的值不会递增

    const(
    	d1,d2 = iota,iota + 1  // iota -> 0, d1 -> 0 d2 -> 1
    	d3 = 10            // iota -> 1, d3 -> 10
    	d4,d5 = 4,iota     // iota -> 2, d4 -> 4
    )
    
    • 1
    • 2
    • 3
    • 4
    • 5

    6 iota 总结

    iota 是一个常量中的关键字

    其值在 const 中第一次出现的时候是 0

    之后,在 const 代码块儿中只要每成功声明一行常量,iost 的值就会加 1

    7 生产示例

    const(
    	_ = iota
       
    	KB = 1 << (10 * iota) // 1 << 10 * 1 就是 2 的 10 次方
    	MB = 1 << (10 * iota) // 1 << 10 * 2 就是 2 的 20 次方
    	GB = 1 << (10 * iota) // 1 << 10 * 2 就是 2 的 30 次方
    	TB = 1 << (10 * iota) // 1 << 10 * 2 就是 2 的 40 次方
    	PB = 1 << (10 * iota) // 1 << 10 * 2 就是 2 的 50 次方
    )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
  • 相关阅读:
    让你起飞的Linux进阶操作
    渗透测试-渗透测试常见的总结
    如何使用轻量应用服务器搭建Veno File Manager个人私有云网盘?
    aardio 读取 Excel文件,并显示在 listview
    【Linux】:Kafka组件介绍
    【matlab 代码的python复现】 Matlab实现的滤波器设计实现与Python 的库函数相同实现Scipy
    Day39、40、41 尚硅谷JUC——ThreadPool线程池
    低代码技术研究路径解读|低代码的产生不是偶然,是数字技术发展的必然
    智通利API文档-ZtlApi
    Options Error: invalid boolean value
  • 原文地址:https://blog.csdn.net/qq_22648091/article/details/126804255