Go语言常量
Posted 鸿渐之翼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go语言常量相关的知识,希望对你有一定的参考价值。
常量是一个程序语言中简单值的标识符,在程序运行时,不会被修改的量。
Go语言常量定义格式
const a [type] = value
普通常量
package main
import "fmt"
func main() {
const LENGTH int = 4
const WIDTH int = 5
var area int
const a, b, c = 2, false, "str" //多重赋值
area = LENGTH * WIDTH
fmt.Printf("面积为 : %d", area)
println()
println(a, b, c)
}
特殊常量iota
可以由编译器修改的常量
const (
a = iota
b = iota
c = iota
)
这里a默认被赋值为0,那么b=1,c=2,也可以简写为
const (
a = iota
b
c
)
实例:
package main
import "fmt"
func main() {
const (
a = iota //0
b //1
c //2
d = "hello" //独立值,iota += 1
e //"hello" 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
实例2:
package main
import "fmt"
const (
i=1<<iota
j=3<<iota
k
l
)
func main() {
fmt.Println("i=",i)
fmt.Println("j=",j)
fmt.Println("k=",k)
fmt.Println("l=",l)
}
运行结果:
i= 1
j= 6
k= 12
l= 24
iota表示从0开始自动加1,注意这里使用的是左移符号<<
它的数学意义是:在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方。所以j=6
i=1:左移 0 位,不变仍为 1。
j=3:左移 1 位,变为二进制 110,即 6。
k=3:左移 2 位,变为二进制 1100,即 12。
l=3:左移 3 位,变为二进制 11000,即 24。
注:<<n==*(2^n)。
以上是关于Go语言常量的主要内容,如果未能解决你的问题,请参考以下文章