Go- 常量
主要介绍以下内容:
编译器可自动推导常量类型
常量可用内置函数返回值赋值,不可用自定义函数
数值型常量使用任何精度都不会溢出
赋值时可使用iota变量
定义的常量不使用不会报错
代码示例可以直接运行
package main
import (
"fmt"
)
/*
函数有返回值必须声明
如下函数实现,编译报错:
too many arguments to return
have (number)
want ()
func getNumber(){
return 5
}
*/
func getNumber() (num int) {
return 5
}
func main() {
const Pi = 3.1415
fmt.Println(Pi)
/*
编译出错: a redeclared in this block
*/
//const a = 1
//const a = 2
const b1 string = "abc" // 显示指示类型
const b2 = "abc" // 编译器自动根据取值推导类型
/*
常量的值必须在编译的时候就能够确定
*/
const c1 = 2 / 3
/*
编译出错:.getNumber() used as value
因为自定义函数均属于未知,无法用于常量的赋值,但可以使用内置函数
*/
//const c2 = getNumber()
/*
数字型的常量没有大小和符号,使用任何精度都不会溢出
*/
const Ln2 = 0.693147180559945309417232121458176568075500134360255254120680009
// 可通过反斜杠作为多行的连接符?
const d = (1 << 100) >> 88
const e = -1.3183872345
const f, h = 1, 2
const (
Mon, Tues, Wed = 1, 2, 3
Thur, Fri, Sat = 4, 5, 6
)
const (
Boy = 0
Girl = 1
)
const (
Red int = iota
ORANGE // 1
YELLO // 2
)
fmt.Println(YELLO) // 2
/*
每赋值一次 iota 取值+1,当重新遇到const时,iota 取值为0
*/
const (
DOG = iota
CAT = iota // 1
KANGOO = iota // 2
)
fmt.Println(KANGOO) // 2
/* 以上定义了很多常量,但是运行的时候不会报错:xxx declared but not used*/
}