您的位置:首页 > 编程语言 > Go语言

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例子点击打开链接
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: