//常量
const num int = 10//int 可以省略
fmt.Println(num)
//多个相同类型的声明可以简写为:
//const name1, name2 = value1, value2
const i,j = 1,2
fmt.Println(i,j)
//不同类型的
const a1,a2,a3 = 1,false,"hello"
fmt.Println(a1,a2,a3,unsafe.Sizeof(a3))//这里Sizeof(a3)是16
//常量可以用len(), cap(), unsafe.Sizeof()函数计算表达式的值。常量表达式中,函数必须是内置函数,否则编译不过
const (
a = "abc"
b = len(a)
c = unsafe.Sizeof(a)//这里Sizeof(c)是16
)
fmt.Println(a,b,c)
//const a,b,c = "abc",len(a),unsafe.Sizeof(a)这样是会报错的
const用作枚举:a=0, b=1, c=2 iota行索引 const ( a = iota//编译器默认重置iota特殊值为0 b = iota c = iota )
等价于
const(
a = iota
b
c
)
const (
a = iota //0
b //1
c //2
d = "ha" //独立值,iota += 1
e //"ha" 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
注意e和前面的d的值相同,但是iota值加一了
测试代码:
package main
import "fmt"
import "unsafe"
//常量
func main(){
const num int = 10//int 可以省略
fmt.Println(num)
//多个相同类型的声明可以简写为:
//const name1, name2 = value1, value2
const i,j = 1,2
fmt.Println(i,j)
//不同类型的
const a1,a2,a3 = 1,false,"hello"
fmt.Println(a1,a2,a3,unsafe.Sizeof(a3))//这里Sizeof(a3)是16
//常量可以用len(), cap(), unsafe.Sizeof()函数计算表达式的值。常量表达式中,函数必须是内置函数,否则编译不过
const (
a = "abc"
b = len(a)
c = unsafe.Sizeof(a)//这里Sizeof(c)是16
)
fmt.Println(a,b,c)
//const a,b,c = "abc",len(a),unsafe.Sizeof(a)这样是会报错的
};