Go语言中的常量

hanzkering · · 3706 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

## 1 概述 常量,一经定义不可更改的量。功能角度看,当出现不需要被更改的数据时,应该使用常量进行存储,例如圆周率。从语法的角度看,使用常量可以保证数据,在整个运行期间内,不会被更改。例如当前处理器的架构类型,可以保证不被更改。 语法如下 ## 2 定义单个常量 const 常量名 <可选的类型> = 常量值 ``` const c1 int = 1000 ``` > Go语言中,标识符(常量名)是否大小写,取决于是否需要在导出时被识别。 常量的值仅仅支持,基础类型,字符串,字符,整型,浮点,布尔。 ## 3 类型推导 类型可以通过值推导出来,大多数情况可以省略类型,例如 ``` const c2 = 1000 ``` 除非你想使用例如,int8, byte,float32这些非默认类型时,需要指定类型,例如 ``` const c3 int16 = 1000 ``` ## 4 定义多个常量 可以一行定义多个常量,例如: ``` const c4, c5 = 42, 1000 ``` 也可以使用 const()定义块,定义多个,每个常量单独一行,例如 ``` const ( c6 = 42 c7 = 1000 ) ``` > 推荐使用const()块语法,一次性定义多个。 const()块定义时,如果常量未给出定义,则延续上面的定义规则,例如: ``` const ( c7 = 42 c8 // c8 = 42 c9 // c9 = 42 ) ``` 此时,c8, c9, 值都是42。 ## 5 iota迭代定义常量 const配合iota关键字使用,可以定义一组由0开始+1迭代的常量 演示语法: ``` const ( gender_secret = iota gender_male // = iota gender_female // = iota ) ``` 此时,三个常量值,分别是,0, 1, 2 iota的规则是:若iota出现在const()中,那么const()定义的第一行的iota就是0,第二行就是0+1=1,不论iota是否被常量使用。演示如下: ``` const ( c1 = 42 // iota = 0,虽然未使用iota,但后边(const()中)有使用,此时iota被初始化为0,下面每行累加1 c2 = iota // iota = 1,iota继续累加,使用了iota c3 = 1024 // iota = 2,同样未使用,但iota的值继续累加。c3 被定义为1024 c4 // iota = 3,c4延续上面的定义c4=1024,iota继续累加 c5 = iota // iota = 4,iota继续累加,使用了iota c6 = iota // iota = 5,iota继续累加,使用了iota ) ``` 此时结果为:42, 1, 1024, 1024, 4, 5 ## 6 常量在编译时确定 编译时确定,因此不能使用变量为其赋值。可以使用,确定的字面量,字面量运算,内置函数运算,其他定义常量,这些在编译时可以确定的内容为常量赋值,演示为: ``` const c1 = "hank" const ( c2 = c1 c3 = 42 + 1024 c4 = len("hank") ) ``` 以上语法都可以! ## 7 常量的作用 * 将特殊的值,语义化。使用时,可以知道其具体含义。 * 数据的集中管理,更改常量定义,即可完成全部的修改。 * 保证不被程序的其他代码所更改。 完! 原文出自:[小韩说课](http://www.hellokang.net/go/go-constant/) 微信关注:小韩说课 ![小韩说课](http://www.hellokang.net/images/wechat_subscription.jpg)

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

3706 次点击  ∙  1 赞  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传