go-常量与运算符
常量的定义
- 常量的值在编译时就已经确定
- 常量的定义格式与变量基本相同
- 等号右侧必须是常量或者常量表达式
- 常量表达式中的函数必须是内置函数
常量的初始化规则与枚举
- 在定义常量组时,如果不提供初始值,则表示将使用上行的表达式
- 使用相同的表达式不代表具有相同的值
- iota是常量的计数器,从0开始,组中每定义1个常量自动递增1
- 通过初始化规则与iota可以达到枚举的效果
- 每遇到一个const关键字,iota就会重置为0
注意:常量的初始化必须是常量
package main import( "fmt" ) //单个常量 const a int = 55 const b string = "你好" //常量组 const( e = "世界" f = a g ) const q,p,w = 1,2,3 const ( u,v,t = 1,2,3 ) const ( m = "A " n l = iota k ) func main() { fmt.Println(a,e,g) //55 世界 世界 fmt.Println(u,v,t) // 1 2 3 fmt.Println(q,p,w) // 1 2 3 fmt.Println(m,n,l,k) //65 65 2 3 }
常量的编码规范:常量的命名最好以全大写字母来表示,前加’_'或小写字母c表示该常量在该包内部使用,不被外部所调用
运算符
- Go中的运算符均是从左至右结合
- 优先级(从高到低)
- ^ ! (一元运算符)
- * / % <<(左移) >>(右移) &(和) &^
- + - | ^ (二元运算符)
- == != < <= >= >
- <- (专门用于并发channel)
- &&(and)
- ||
#二进制位运算 /* 6 : 0110 11 : 1011 ----------- & 0010 两个都是1则为1,否则为0 | 1110 如果有一个是1则为1 ^ 1101 两个只有其中一个是1则为1,否则为0 &^ 0100 如果第二个数为1,则第一个数改为0,否则无变化为第一位数 */
利用常量组实现存储单位的转换
package main import "fmt" const ( B float64=1<<(iota*10) KB MB GB TB ) func main() { fmt.Println(B) fmt.Println(KB) fmt.Println(MB) fmt.Println(GB) fmt.Println(TB) }