前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第五节:Go语言常量

第五节:Go语言常量

作者头像
李海彬
发布2018-08-16 15:26:04
2570
发布2018-08-16 15:26:04
举报
文章被收录于专栏:Golang语言社区Golang语言社区

干货来了!!!为了让更多的小伙伴喜欢Golang、加入Golang之中来,Golang语言社区发起人彬哥联合业界大牛共同推出了Go语言基础、进阶、提高课程,目前已在网易云课堂限时特价分享,希望有兴趣的朋友们多多分享和支持!

以下是Go语言基础、进阶、提高课程--第五节:Go语言常量的部分文本教案,具体详细视频课程请扫描文章下方图片二维码或点击阅读原文!

常量是一个简单值的标识符,在程序运行时,不会被修改的量。

常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。

常量的定义格式:

代码语言:javascript
复制
1 const identifier [type] = value

你可以省略类型说明符 [type],因为编译器可以根据变量的值来推断其类型。

  • 显式类型定义: const b string = "abc"
  • 隐式类型定义: const b = "abc"

多个相同类型的声明可以简写为:

代码语言:javascript
复制
1 const c_name1, c_name2 = value1, value2

以下实例演示了常量的应用:

代码语言:javascript
复制
 1 package main
 2
 3 import "fmt"
 4
 5 func main() {
 6   const LENGTH int = 10
 7   const WIDTH int = 5   
 8   var area int
 9   const a, b, c = 1, false, "str" //多重赋值
10
11   area = LENGTH * WIDTH
12   fmt.Printf("面积为 : %d", area)
13   println()
14   println(a, b, c)   
15 }

以上实例运行结果为:

代码语言:javascript
复制
1 面积为 : 50
2 1 false str

常量还可以用作枚举:

代码语言:javascript
复制
1 const (
2    Unknown = 0
3    Female = 1
4    Male = 2
5 )

数字 0、1 和 2 分别代表未知性别、女性和男性。

常量可以用len(), cap(), unsafe.Sizeof()函数计算表达式的值。常量表达式中,函数必须是内置函数,否则编译不过:

代码语言:javascript
复制
 1 package main
 2
 3 import "unsafe"
 4 const (
 5    a = "abc"
 6    b = len(a)
 7    c = unsafe.Sizeof(a)
 8 )
 9
10 func main(){
11    println(a, b, c)
12 }

以上实例运行结果为:

代码语言:javascript
复制
1 abc 3 16

iota

iota,特殊常量,可以认为是一个可以被编译器修改的常量。

在每一个const关键字出现时,被重置为0,然后再下一个const出现之前,每出现一次iota,其所代表的数字会自动增加1。

iota 可以被用作枚举值:

代码语言:javascript
复制
1 const (
2    a = iota
3    b = iota
4    c = iota
5 )

第一个 iota 等于 0,每当 iota 在新的一行被使用时,它的值都会自动加 1;所以 a=0, b=1, c=2 可以简写为如下形式:

代码语言:javascript
复制
1 const (
2    a = iota
3    b
4    c
5 )

iota 用法

代码语言:javascript
复制
 1 package main
 2
 3 import "fmt"
 4
 5 func main() {
 6    const (
 7            a = iota   //0
 8            b          //1
 9            c          //2
10            d = "ha"   //独立值,iota += 1
11            e          //"ha"   iota += 1
12            f = 100    //iota +=1
13            g          //100  iota +=1
14            h = iota   //7,恢复计数
15            i          //8
16    )
17    fmt.Println(a,b,c,d,e,f,g,h,i)
18 }

以上实例运行结果为:

代码语言:javascript
复制
1 0 1 2 ha ha 100 100 7 8
代码语言:javascript
复制
 1 package main
 2
 3 import "fmt"
 4 const (
 5    i=1<<iota
 6    j=3<<iota
 7    k
 8    l
 9 )
10
11 func main() {
12    fmt.Println("i=",i)
13    fmt.Println("j=",j)
14    fmt.Println("k=",k)
15    fmt.Println("l=",l)
16 }

以上实例运行结果为:

代码语言:javascript
复制
1 i= 1
2 j= 6
3 k= 12
4 l= 24

iota 表示从 0 开始自动加 1,所以 i=1<<0, j=3<<1(<< 表示左移的意思),即:i=1, j=6,这没问题,关键在 k 和 l,从输出结果看 k=3<<2,l=3<<3。

简单表述:

  • i=1:左移 0 位,不变仍为 1;
  • j=3:左移 1 位,变为二进制 110, 即 6;
  • k=3:左移 2 位,变为二进制 1100, 即 12;
  • l=3:左移 3 位,变为二进制 11000,即 24。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-08-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Golang语言社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云课堂
云课堂聚焦教培机构 OMO 转型,为机构提供在线及混合式课堂解决方案,极速开课、多向互动、智能沉淀、一键分发,是教培课堂便捷、稳定的教学助手。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档