Go定义常量和枚举类型
Go定义常量和枚举类型
1、使用const定义常量
package main
func main() {
const a = 1 //使用const定义常量
const b, c = "b", "c" //使用const定义常量
const filename = "a.txt" //使用const定义常量
}
2、可以定义在包内或者函数体内
package main
import "fmt"
const c = "c" //可以定义在包内,函数体外
func main() {
const a1, a2 = 10, 5 //可以定义在函数内部
const s = "sss" //可以定义在函数内部
fmt.Println(c)
}
3、使用括号定义一组常量
package main
func main() {
const (
a = 1
b = 2
c = "c"
d = 1.5
) //使用括号定义一组常量
}
4、可以指定常量的类型
package main
func main() {
const a int = 1 //可以指定类型
const b int64 = 2 //可以指定类型
const c string = "c" //可以指定类型
const d float32 = 1.5 //可以指定类型
const a1 = 1 //可以不指定类型
const b1 = 2 //可以不指定类型
const c1 = "c" //可以不指定类型
const d1 = 1.5 //可以不指定类型
}
5、常量可以作为各种类型使用
package main
import "fmt"
func add(a, b int) int {
return a + b
}
func add2(a, b float32) float32 {
return a + b
}
func main() {
const a1, a2 = 10, 5
v := add(a1, a2) //可以作为int类型使用
fmt.Println(v)
v2 := add2(a1, a2) //可以作为float32使用
fmt.Println(v2)
}
可以看到a1和a2是常量,可以作为int,也可以作为float32
6、使用iota关键字,定义枚举类型
6.1、自增类型的iota
package main
import "fmt"
func main() {
const (
cpp = iota //0
python //1
java //2
golang //3
)
fmt.Println(cpp, python, java, golang)
}
6.2、也可以不用中间某个值,用-代替就行
package main
import "fmt"
func main() {
const (
cpp = iota //0
python //1
_ //2
golang //3
)
fmt.Println(cpp, python, golang)
}
6.3、可以执行运算
定义b,kb,mb,gb,tb
package main
import "fmt"
func main() {
const (
b = 1 << (10 * iota) //1
kb //1024
mb //1048576
gb //1073741824
tb //1099511627776
)
fmt.Println(b, kb, mb, gb, tb)
}