返回

Go 语言神奇语法(三):点滴细节剖析

后端

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 语法细节的认识,从而编写出更加健壮、优雅的代码。