go语言学习-常量
2017-11-18 10:35
183 查看
一般介绍:
go常量和C语言的常量有点类似,也是用const关键字来声明一个常量,常量的类型可以为字符(character)、字符串(string)、布尔值(boolean)还有数值(numeric)。可以进行var变量声明的地方,都可以声明const常量。值得注意的是,数值类型的const常量,是没有确切的类型的(比如int64,float64等),当然两个数值类型的const常量进行四则运算得到的结果的精度也是不固定的。可以通过强制类型转换和函数调用来为数值类型的const常量指定确切的类型。
预定义常量:Go语言预定义了这些常量:true、false和iota。其中iota比较特殊,可以被认为是一个可被编译器修改的常量,在每一个const关键字出现时被重置为0,然后在下一个const出现之前,每出现一次iota,其所代表的数字会自动加1。
const ( // iota被重置为0 c0 = iota // c0 = 0 c1 = iota // c1 = 1 c2 = iota // c2 = 2 )
如果两个const的赋值语句的表达式一样的,那么可以省略后一个赋值表达式,所以以上代码可以写成:
const ( // iota被重置为0 c0 = iota // c0 = 0 c1 c2 )
go不支持enum,一般可以使用在const后跟一对圆括号的方法定义一组常量的方法来定义枚举值:
const ( Sunday = iota Monday Tuesday Wednesday Thursday Friday Saturday )
代码例子:
package main import "fmt" import "math" const s string = "constant" // 常量的声明在main函数外面,并指明为string类型 const s1 = "constant1" // 当然也可以不指明类型 func main() { fmt.Println(s); fmt.Println(s1); const n = 700000000; // 常量的声明在main函数里面 // 这里两个常量进行/运算,得到的结果的精度是不固定的 // 如果两个常量刚好能整除,则结果不带小数部分,否则将带小数部分 const d = 3e20 / n; fmt.Println(d); // 数值类型的const常量是没有确切的类型,你可以通过强制类型转换为其指定一个类型 // 注意,此处int64(d)时将会报错,报错原因是常量被截断成Integer,即丢失精度 fmt.Println(float64(d)); // 当然你也可以通过函数调用,来为其指定类型。 fmt.Println(math.Sin(n)); }
正常运行结果:
数值类型转换失败:
iota和const实现enum例子:
package main
import "fmt"
func main() {
const ( Sunday = iota Monday Tuesday Wednesday Thursday Friday Saturday )
const a = iota;
const b = iota;
fmt.Println(Sunday);
fmt.Println(Monday);
fmt.Println(Tuesday);
fmt.Println(Wednesday);
fmt.Println(Thursday);
fmt.Println(Friday);
fmt.Println(Saturday);
fmt.Println(a);
fmt.Println(b);
}
运行结果:
注:本文例子参考go by example例子点击打开链接
相关文章推荐
- Go语言学习之常量(The way to go)
- Go语言学习之常量(The way to go)
- Go语言学习笔记三: 常量
- Go语言学习笔记 --- 常量的定义详解
- Go语言学习笔记三: 常量
- GO语言学习日记(六)常量的赋值
- go语言学习-常量
- Go语言学习(二)常量
- Go语言学习笔记 --- 常量、变量、批量定义与声明、数据类型、类型别名、类型转换
- Go语言学习二:Go基础(变量、常量、数值类型、字符串、错误类型)
- Go语言学习(二)常量
- Go语言学习笔记-常量
- go语言学习笔记(5) 常量
- Go语言学习之变量(The way to go)
- go语言学习-Any类型
- Hyperledger fabric 学习笔记: go语言 与 JSON
- Go语言学习资料汇总
- go语言学习基础
- Go学习笔记之变量和常量
- C语言基础学习基本数据类型-变量和常量