各位早上好,我是小西 思来想去,写什么主题呢?
今天我们继续深挖Go 基础,俗话说 基础不牢,地动山摇
变量和常量是几乎每种编程语言中有的特性
比如 JavaScript, PHP ,Java 都可以定义常量和变量 简单来说:
变量是在程序执行过程中会变化的值,保存在运行内存中,有内存地址
常量是在程序执行过程中不会变的值,固化在程序中,无内存地址

无类型常量 (Untyped Constants)
常量在定义时,一般不需要声明类型

常量名首字母大写,可以被外部模块访问
虽然常量定义不需要类型,但他只能是 string, float, bool ,compilex64 的字面量
Map slice切片,结构体,函数都不能定义为常量
常量定义时,也不可以调用函数

Go语言中的常量和 C 中有 #define 有一点类似,会在编译时替换为你定义的字面量
注意,常量也可以定义为有类型的,仅限刚才提到的基础类型,下面有一个例子
iota自增计数器
这个是用来在 const 定义常量时,使用的
iota 在 const 块首次出现时为0,第二行会+1
如果你在下一个const 块中写 iota 就会又变成0

iota 还可以结合的 <<左移操作来生成定义字节单位
使用_ 可以忽略 iota 的 某个值,这里忽略的是 0
1 左移10次就是 1024
你还可以有使用有类型的常量,作为枚举类型,顺便加上打印方法

总结
const 用来定义常量,仅限基本类型,别使用函数返回值 配合iota使用效果更佳
帮你消除代码中的魔法数字,简化枚举定义,如果有什么关于Go的问题,欢迎留言
本文就到这里,感谢你的阅读!往期Go学习笔记,可以看下面↓↓↓