1.常量的定义
常量的值在编译时就已经确认
常量的定义格式与变量基本相同
等号右侧必须是常量或者常量表达式
常量表达式中的函数必须是内置函数
//定义单个常量
const a int = 1
const b = "A"
const (
text = "123"
length = len(text)
num = b * 20
)
//同时定义多个变量
const i, j, k = 1, "2", "3"
const (
text2 ,length2, num2 = "456", len(text2), k* 10
)
2.常量的初始化规则
- 在定义常量组时,如果不提供初始值,则表示使用上行的表达式
var a = 1
const (
b = a
//此时报错,因为全局变量在编译时不能确定值,常量必须是编译时能确定值的或使用内置函数获得的值(eg:len())
)
const (
a = "A"
b
c
//此时 a,b,c都为"A"
)
const (
a, b = 1, "A"
c, d
//a,c为1,b,d为"A"。此时注意下行的常量个数必须与上行数量保持一致
)
3.常量的枚举
使用相同的表达式不代表具有相同的值
iota是常量的计数器,从0开始,组中每定义1个常量自动递增1
通过初始化规则与iota可以达到枚举的效果
每遇到一个const关键字,iota就会重置为0
const (
a = "A"
b
c = iota
d //d的值为3,因为在常量组中,定义了4个变量所以iota计数器从0开始计数4次,所以为3
)
4.运算符
//优先级从高到低
* / % << >> & &^
= - | ^
== != < <= >= >
&&
||
例子:
/*
6的二进制:0110 第一个
10的二进制:1011 第二个
---------
& 0010 = 2 (两个都是1才为1)
| 1111 = 15 (一个是1就是1)
^ 1101 = 13 (两个只有一个是1才是1)
$^ 0100 = 4 (第二个为1则是0,否则与第一位相同)
*/