
正文
golang基础--常量与运算符
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
常量与运算符
常量的定义
-
常量的值在编译时已经确定
-
常量的定义格式与变量的基本相同
-
等号的右侧必须是常量或者常量表达式
-
规范: 常量定义时建议都使用大写,单词之间使用大写
-
便于包的外部调用
-
如果只限于包内部使用在常量开头使用
_
或者使用小写
c
//常量赋值
package main
import "fmt"
const a int = 1 //常规写法:声明类型
const b = 'A' //自动判断类型
const(
c = a
d = a + 1
e = a + 2
)
const ( //常量组定义方法2
a2, b2, c2 = 1, "2", "c"
)
const a3, b3, c3 = 1, "2", "c" //简单写法,多个定义
const ( //常量组特性:如果常量没有赋值,下面默认使用了之前的常量表达式
a4 = 1
b4
c4
d4
)
func main() {
fmt.Println(a4)
fmt.Println(b4)
fmt.Println(c4)
fmt.Println(d4)
}
/*output
1
1
1
1
*/
常量与全局变量的区别
-
常量表达式里面必须使用常量表达式的变量和内置函数,不能使用运行时才能获得的变量和值
package main
import "fmt"
var sss = 123
const (
//a = len(sss) //这种写法是错误的,无法使用全局变量
b = "123"
c = len(b)
d,f = 1,"abc"
j //这种方式也是错误的,初始化的个数必须相同
)
func main() {
//fmt.Println(a)
fmt.Println(b)
fmt.Println(c)
fmt.Println(d)
}
/*output
123
3
3
*/
枚举结合常量组使用,用于计数
-
常量组中每定义一个常量,计数就递增1,第一个常量默认为0
-
当组中常量出现关键字
iota
时,说明此时需要使用该组常量的计数
//常量&枚举(计数)
package main
import "fmt"
const (
B1 = "ssss"
A = "a"
B = iota
E
F = iota
)
func main() {
fmt.Println(B1)
fmt.Println(A)
fmt.Println(B)
fmt.Println(E)
fmt.Println(F)
}
/*output
ssss //iota =0
a //iota=1
2 //iota =2
3
4
*/
运算符
-
go中运算符均时从左到右
小练习:尝试结合常量的
iota
与
<<
运算符实现计算机储存单位的枚举***
-
expt:
/*实现计算机储存单位常量的枚举
*/
package main
import "fmt"
const (
B float64 = 1 << (iota * 10) //此时iota =0 ,KB
KB // 此时计数为1,MB
MB // iota为2
GB
TB
PB
)
func main() {
fmt.Println(B)
fmt.Println(KB)
fmt.Println(MB)
fmt.Println(TB)
fmt.Println(PB)
}
/*output
1
1024
1.048576e+06
1.099511627776e+12
1.125899906842624e+15
*/
常量的值在编译时已经确定
常量的定义格式与变量的基本相同
等号的右侧必须是常量或者常量表达式
规范: 常量定义时建议都使用大写,单词之间使用大写
-
便于包的外部调用
-
如果只限于包内部使用在常量开头使用
_或者使用小写c//常量赋值
package main import "fmt"
const a int = 1 //常规写法:声明类型
const b = 'A' //自动判断类型
const(
c = a
d = a + 1
e = a + 2
) const ( //常量组定义方法2
a2, b2, c2 = 1, "2", "c"
)
const a3, b3, c3 = 1, "2", "c" //简单写法,多个定义
const ( //常量组特性:如果常量没有赋值,下面默认使用了之前的常量表达式
a4 = 1
b4
c4
d4
) func main() {
fmt.Println(a4)
fmt.Println(b4)
fmt.Println(c4)
fmt.Println(d4)
} /*output
1
1
1
1
*/
常量表达式里面必须使用常量表达式的变量和内置函数,不能使用运行时才能获得的变量和值
package main
import "fmt"
var sss = 123
const (
//a = len(sss) //这种写法是错误的,无法使用全局变量
b = "123"
c = len(b)
d,f = 1,"abc"
j //这种方式也是错误的,初始化的个数必须相同
)
func main() {
//fmt.Println(a)
fmt.Println(b)
fmt.Println(c)
fmt.Println(d)
}
/*output
123
3
3
*/
常量组中每定义一个常量,计数就递增1,第一个常量默认为0
当组中常量出现关键字
iota
时,说明此时需要使用该组常量的计数
//常量&枚举(计数)
package main
import "fmt"
const (
B1 = "ssss"
A = "a"
B = iota
E
F = iota
)
func main() {
fmt.Println(B1)
fmt.Println(A)
fmt.Println(B)
fmt.Println(E)
fmt.Println(F)
}
/*output
ssss //iota =0
a //iota=1
2 //iota =2
3
4
*/
iota
与
<<
运算符实现计算机储存单位的枚举***
expt:
/*实现计算机储存单位常量的枚举
*/
package main
import "fmt"
const (
B float64 = 1 << (iota * 10) //此时iota =0 ,KB
KB // 此时计数为1,MB
MB // iota为2
GB
TB
PB
)
func main() {
fmt.Println(B)
fmt.Println(KB)
fmt.Println(MB)
fmt.Println(TB)
fmt.Println(PB)
}
/*output
1
1024
1.048576e+06
1.099511627776e+12
1.125899906842624e+15
*/






