在 Go 语言中,make主要用于初始化切片(slice)、映射(map)和通道(channel)三种类型的数据结构。以下是具体用法:
一、初始化切片(slice)
语法:make([]T, len, cap)
-
T是切片中元素的类型。 -
len指定切片的长度,表示当前切片中有多少个元素。 -
cap指定切片的容量,表示切片在不重新分配内存的情况下可以容纳多少个元素。如果未指定容量,容量将等于长度。
示例:
s := make([]int, 5)
// s 的长度为 5,此时元素初始值为 0
s1 := make([]int, 3, 10)
// s1 的长度为 3,容量为 10,元素初始值为 0
二、初始化映射(map)
语法:make(map[K]V)
-
K是键的类型。 -
V是值的类型。
示例:
m := make(map[string]int)
// 创建一个空的字符串为键、整数为值的映射
三、初始化通道(channel)
语法:make(chan T, bufferSize)
-
T是通道中元素的类型。 -
bufferSize指定通道的缓冲区大小。如果为 0 或未指定,则创建一个无缓冲的通道,发送和接收操作必须同时进行(同步通信);如果指定了缓冲区大小,则可以在缓冲区未满时进行发送操作,在缓冲区不为空时进行接收操作(异步通信)。
示例:
c := make(chan int)
// 创建一个无缓冲的整数通道
c1 := make(chan int, 5)
// 创建一个缓冲区大小为 5 的整数通道
总之,make函数在 Go 语言中是一种非常方便的初始化特定数据结构的方式。
(以上内容来自“豆包”大模型)