返回
Go 语言神奇语法(三):点滴细节剖析
后端
2024-01-14 11:29:26
Go 作为一门现代编程语言,在语法上具有简洁、灵活的特点。在本系列文章中,我们将重点关注 Go 中的特殊语法,帮助您提升对 Go 语法细节的认识。在本文中,我们将介绍分配函数 new 与 make 的不同、类型选择、转换和断言,以及空白标识符 _ 的一些神奇的用法。
分配函数 new 与 make 的区别
new 和 make 都是分配内存的函数,但它们在使用上存在一些差异。
- new :new 用于分配一个新的值,该值的大小与类型相关。它返回一个指向该值的指针。
- make :make 用于分配一个切片、映射或通道。它返回一个指向该结构的指针。
下表总结了 new 和 make 的主要区别:
特征 | new | make |
---|---|---|
返回值 | 指向新值的指针 | 指向结构的指针 |
分配类型 | 值 | 切片、映射或通道 |
语法 | new(T) |
make([]T, length) 、make(map[K]V) 、make(chan T) |
类型选择、转换和断言
类型选择、转换和断言都是操作类型和值的工具。
- 类型选择 :类型选择用于从接口类型中选择一个具体类型。
- 类型转换 :类型转换用于将一个值从一种类型转换为另一种类型。
- 类型断言 :类型断言用于检查一个值是否属于某种类型。
下表总结了类型选择、转换和断言的主要区别:
特征 | 类型选择 | 类型转换 | 类型断言 |
---|---|---|---|
目的 | 从接口类型中选择一个具体类型 | 将一个值从一种类型转换为另一种类型 | 检查一个值是否属于某种类型 |
语法 | x.(T) |
T(x) |
x.(type) |
空白标识符 _ 的神奇用法
空白标识符 _ 在 Go 语言中有多种用法。
- 占位符 :_ 可用作占位符,表示不需要使用某个变量。
- 返回值 :_ 可用作函数的返回值,表示函数不返回任何值。
- 导入包 :_ 可用作导入包的别名。
- 类型断言 :_ 可用作类型断言中的类型名称。
下表总结了空白标识符 _ 的主要用法:
用法 | 示例 |
---|---|
占位符 | func f(x, _ int) {} |
返回值 | func f() _ {} |
导入包 | import _ "fmt" |
类型断言 | x := interface{}(y).(type) |
结语
本文介绍了 Go 语言中分配函数 new 与 make 的不同、类型选择、转换和断言,以及空白标识符 _ 的一些神奇的用法。掌握这些知识,将有助于您提升对 Go 语法细节的认识,从而编写出更加健壮、优雅的代码。