go-05-常量

Posted shark_西瓜甜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go-05-常量相关的知识,希望对你有一定的参考价值。

一、const

1 常量介绍

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

2 声明单个常量

const pi = 3.1415926

3 声明多个常量

const (
    codeOk int = 200
    conde404 = 404
)

4 值的继承

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

package main

import "fmt"

const (
    a = "hello"  // a -> hello
    b            // b -> hello
)
func main()
    fmt.Println(a,b)

二、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

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

3 声明多个

const(
	a1 = iota  // 0
	a2         // 1
	a3         // 2
)

代码解读:
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
)

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
)

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
)

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 次方
)

以上是关于go-05-常量的主要内容,如果未能解决你的问题,请参考以下文章

请问java中的基本数据类型中的字节型( byte ) 是啥概念,请列举几个byte型的常量,谢!

常量

x的n次方叫啥函数,n叫指数,x叫啥?另外啥叫幂函数?谢谢好心人。

python中math模块的常用详解

10的10次方到底是多少?

警示自己