1.前言
在 Go 语言中,字面量是用来表示固定值的表达式。Go 支持几种类型的字面量,包括整型、浮点型、字符串、字符、布尔值以及复合类型(如数组、切片、结构体、映射等)。
下面我将介绍一些在 Go 语言中使用字面量的常见技巧和最佳实践。
2.字面量
整型和浮点型字面量
十进制、八进制、十六进制和二进制表示:
代码语言:javascript复制dec := 42 // 十进制
oct := 052 // 八进制,前缀是0
hex := 0x2A // 十六进制,前缀是0x或0X
bin := 0b101010 // 二进制,前缀是0b或0B(Go 1.13 )
浮点型字面量:
代码语言:javascript复制float1 := 3.14
float2 := 6.02e23 // 科学计数法
float3 := .123 // 有效但没有前导整数
数值字面表示中使用下划线分段来增强可读性。
从 Go 1.13 开始,下划线可以出现在整数、浮点数和虚部数字面量中,以用做分段符以增强可读性。 但是要注意,在一个数值字面表示中,一个下划线_不能出现在此字面表示的首尾,并且其两侧的字符必须为(相应进制的)数字字符或者进制表示头。
一些合法和不合法使用下划线的例子:
代码语言:javascript复制/ 合法的使用下划线的例子
6_9 // == 69
0_33_77_22 // == 0337722
0x_Bad_Face // == 0xBadFace
0X_1F_FFP-16 // == 0X1FFFP-16
0b1011_0111 0xA_B.Fp2i
// 非法的使用下划线的例子
_69 // 下划线不能出现在首尾
69_ // 下划线不能出现在首尾
6__9 // 下划线不能相连
0_xBadFace // x不是一个合法的八进制数字
1_.5 // .不是一个合法的十进制数字
1._5 // .不是一个合法的十进制数字
字符串和字符字面量
普通字符串:
代码语言:javascript复制str := "Hello, world!"
原生字符串(反引号):可以包含换行符,不支持转义序列。
代码语言:javascript复制rawStr := `Hello,
world!`
字符(rune)字面量:表示单个 Unicode 字符。
代码语言:javascript复制char := 'A' // rune 类型,代表 Unicode 码点
布尔型字面量
代码语言:javascript复制trueVal := true
falseVal := false
复合类型字面量
数组和切片:
代码语言:javascript复制array := [3]int{1, 2, 3}
slice := []int{1, 2, 3}
结构体:
代码语言:javascript复制type Person struct {
Name string
Age int
}
person := Person{"John Doe", 30}
映射(Map):
代码语言:javascript复制dict := map[string]int{"one": 1, "two": 2}
使用字段名初始化结构体
这有助于提高代码的可读性,特别是当结构体有多个字段时。
代码语言:javascript复制person := Person{
Name: "Jane Doe",
Age: 32,
}
使用索引初始化复合类型
对于数组、切片和映射,可以指定索引或键来初始化。
代码语言:javascript复制slice := []int{0: 1, 1: 2, 2: 3}
mapExample := map[string]int{"first": 1, "second": 2}
3.结论
在 Go 语言中,字面量提供了一种简洁明了的方式来创建和初始化变量。通过使用不同类型的字面量,开发者可以清晰地表达他们的意图,同时保持代码的清晰和易于维护。以上介绍的字面量表示技巧可以帮助你更高效地使用 Go 语言。
参考文献
基本类型和它们的字面量表示 - Go语言101