1、常量和const关键字
特点:
- 常量使用关键字 const 定义,用于存储不会改变的数据,常量是在编译时被创建的,即使定义在函数内部也是如此。
- const定义类型只有基本数据类型。string bool 数字(整型、浮点型、复数)
- 常量的值必须是能够在编译时就能够确定的,可以在其赋值表达式中涉及计算过程,但是所有用于计算的值必须在编译期间就能获得。
变量三种命名方式:
var num1 int = 3
var num2 = 4
num3 := 5
常量定义格式:和变量的声明语法类似。
显式类型定义: const b string = "abc"
隐式类型定义: const b = "abc"
2、iota 常量生成器(枚举类型)
type Weekday int
const (
Sunday Weekday = iota
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
)
2.1 将枚举值转换为字符串
当这个类型需要显示为字符串时,Go语言会自动寻找String()方法并进行调用。
3、无类型常量
编译器为这些没有明确的基础类型的数字常量提供比基础类型更高精度的算术运算,可以认为至少有 256bit 的运算精度。这里有六种未明确类型的常量类型,分别是无类型的布尔型、无类型的整数、无类型的字符、无类型的浮点数、无类型的复数、无类型的字符串。
示例 2】math.Pi 无类型的浮点数常量,可以直接用于任意需要浮点数或复数的地方:
var x float32 = math.Pi
var y float64 = math.Pi
var z complex128 = math.Pi
如果 math.Pi 被确定为特定类型,比如 float64,那么结果精度可能会不一样,同时对于需要 float32 或 complex128 类型值的地方则需要一个明确的强制类型转换:
const Pi64 float64 = math.Pi
var x float32 = float32(Pi64) 强制类型转换方式语法和其他语言不同
var y float64 = Pi64
var z complex128 = complex128(Pi64)