Golang语言社区--Go语言基础第三节常量

大家好,我是彬哥;今天继续我们的基础课程的讲解,本篇给大家讲解的是关于Go语言常量的知识。那么在编程语言中何为常量?常量解释如下:

常量

在Go语言中,常量是指编译期间就已知且不可改变的值。

1、字面常量

-1024       // 整型常量
10.24       // 浮点型常量
10.2+4i       // 复数类型的常量
true         // 布尔型常量
"Golang"     // 字符串常量

在Go语言中,字面常量没有类型,只要这个常量在相应类型的值域范围内,就可以作为该类型的常量,比如上面的常量-1024,可以赋值给int、uint、int32、int64、float32、float64、complex64、complex128等类型的变量。

2、const常量

通过const常量,可以给字面常量指定一个友好的名字:

const Pi float64 = 3.1415
const zero = 0.0    //无类型浮点常量
cosnt (
    size int64 = 1024
    eof = -1      //无类型整型常量   
)
const u,v float32 = 0, 3
const a,b,c = 3,4,"Golang"
const mask = 1<<3

常量的赋值是一个编译期行为,所以右值不能出现任何需要运行期才能得出结果的表达式,例如:

const Golang string = "www.golang.Ltd"    // error

3、预定义常量

Go语言预定义常量有:true、false、iota,前两个为bool常量;

iota是一个可被编译器修改的常量,在每一个const关键字出现时被重置为0,然后在下一个const出现之前,每出现一次iota,其所代表的数字会自动增1,例如:

const (          
    Golang0 = iota   // Golang=0 
    Golang1 = iota   // Golang1=1 
    Golang2 = iota   // Golang2=2 
)

另外一种写法也是可以的这个和下面讲的枚举一致,例如:

const (          
    Golang0 = iota   // Golang=0 
    Golang1          // Golang1=1 
    Golang2          // Golang2=2 
)

4、枚举

在const后跟一对园括号的方式定义一组常量,例如:

const (         
    Sunday = iota   
    Monday
    Tuesday
    Wednesday
    Thursday
    Friday
    Saturday
    )

同Go语言的其他符号一样,以大写字母开头的常量在包外可见;后面讲解函数的时候,会给大家着重说明。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

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

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java帮帮-微信公众号-技术文章全总结

【Java提高三】三大特性-多态

【Java提高】三大特性-多态 面向对象编程有三大特性:封装、继承、多态。 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构...

3659
来自专栏C/C++基础

C++纯虚函数与抽象类

为什么说虚函数是C++最重要的特性之一呢,因为虚函数承载着C++中动态联编的作用,也即多态,可以让程序在运行时选择合适的成员函数。虚函数必须是类的非静态成员函数...

1542
来自专栏鸿的学习笔记

Python和Scala的变量作用域

今天聊的主题是变量作用域,也就是定义的变量可以使用的一片区域。变量通常意义指的是一个存储着标识符和标识符所关联的值的空间。在程序的运行过程中,标识符会绑定上相应...

661
来自专栏木子昭的博客

Python中 传递值 与 传递引用 的区别

对于不可变类型传递值(不会影响原数据) ? 不可变类型 对于可变类型传递引用(会影响原数据) ? 不可变类型传递引用 pyth...

3789
来自专栏微信公众号:Java团长

Java基础01 从HelloWorld到面向对象

Java是完全面向对象的语言。Java通过虚拟机的运行机制,实现“跨平台”的理念。我在这里想要呈现一个适合初学者的教程,希望对大家有用。

921
来自专栏函数式编程语言及工具

泛函编程(3)-认识Scala和泛函编程

接着昨天的文章,再示范一个稍微复杂一点的尾递归tail recursion例子:计算第n个Fibonacci数。Fibonacci数第一、第二个数值分别是0,1...

2007
来自专栏开发与安全

从零开始学C++之异常(二):程序错误、异常(语法、抛出、捕获、传播)、栈展开

一、程序错误 编译错误,即语法错误。程序就无法被生成运行代码。 运行时错误 不可预料的逻辑错误 可以预料的运行异常 例如: 动态分配空间时...

1880
来自专栏lgp20151222

Java函数的传参机制

最近的一个项目,里面各种返回void,参数用引用类型,那叫一个熟和多,但是也把我绕糊涂了。

1492
来自专栏blackheart的专栏

[C#2] 1-泛型

1. 泛型概述 泛型是一种类型的多态;比如当我们写一个栈或者队列的时候,需要指定其数据类型,int一份代码,string一份代码,object的一份代码, 这些...

22610
来自专栏Coco的专栏

一道面试题引发的对javascript类型转换的思考

对于一个好奇的切图仔来说,忍不住动手尝试了一下,看到题目首先想到的是会用到高阶函数以及 Array.prototype.reduce()。

2454

扫码关注云+社区