1.常量的定义
1)常量的值再编译时就已经确定
2)常量的定义格式与变量基本相同
3)等号右侧必须是常量或者常量表达式
4)常量表达式中的函数必须是内置函数
例如:
//定义单个常量
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
)
代码实例:
package main
import (
"fmt"
"math"
)
//定义常量
const str = "acvfrttt"
func main() {
//定义常量
const a, b = 3, 5
var c int
c = int(math.Sqrt(a*a + b*b))
fmt.Println(str, c)
}
输出:
API server listening at: 127.0.0.1:28132
123 5
2.常量的初始化规则与枚举
1)在定义常量组时,如果不提供初始值,则表示将使用上行的表达式
2)使用相同的表达式不代表具有相同的值
3)iota是常量的计数器,从0开始,组中每定义一个常量自动递增1
4)通过初始化规则与iota可以达到枚举的效果
5)每遇到一个const关键字,iota就会重置为0
例如:
const (
//a与b的值都为“A”
a = "A"
b
c = iota
d //d的值为3
)
const (
e = iota
f //f的值为1
)
//星期枚举
const (
//第一个常量不可省略表达式
Monday = iota //iota是自增值
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
)
//B, KB, MB, GB, TB, PB
const (
B = 1 << (10 * iota)
KB
MB
GB
TB
PB
)
代码实例:
package main
import (
"fmt"
)
//B, KB, MB, GB, TB, PB
const (
B = 1 << (10 * iota)
KB
MB
GB
TB
PB
)
//星期枚举
const (
//第一个常量不可省略表达式
Monday = iota //iota是自增值
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
)
func main() {
fmt.Println(Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday)
fmt.Println(B, KB, MB, GB, TB, PB)
}
输出:
API server listening at: 127.0.0.1:6247
0 1 2 3 4 5 6
1 1024 1048576 1073741824 1099511627776 1125899906842624
3.运算符
Go中的运算符均是从左至右结合。
优先级:
1)^ ! (一元运算)
2)* / % << >> & &^
3)+ - | ^ (二元运算)
4)== != < <= >= >
5)<- (专门用于channel)
6)&&
7)||
4.递增递减语句
在Go当中,++与--是作为语句而不是作为表达式