go语言make的用法

2024-03-06 12:02:28 浏览数 (1)

在Go语言中,make函数用于初始化内建的数据类型(如切片、映射和通道),分配内存并返回初始化的实例。

以下是make的一些基本用法:

1. 初始化切片(Slice): make可以用来创建一个切片,同时指定其长度和容量。

代码语言:javascript复制
// make([]Type, length, capacity)
s := make([]int, 0, 10) // 创建一个整型切片,长度为0,容量为10

如果容量被省略,则容量被设置为与长度相等。

代码语言:javascript复制
s := make([]int, 10) // 创建一个整型切片,长度和容量都是10

2. 初始化映射(Map): make可以用来创建一个映射,并允许指定初始容量。

代码语言:javascript复制
// make(map[KeyType]ValueType, initialCapacity)
m := make(map[string]int, 10) // 创建一个字符串到整型的映射,容量是10

映射的容量是可选的,如果省略,则按默认方式初始化。

代码语言:javascript复制
m := make(map[string]int) // 创建一个字符串到整型的映射,默认容量

3. 初始化通道(Channel): make也用于创建通道,并指定通道的缓冲大小。

代码语言:javascript复制
// make(chan Type, bufferCapacity)
c := make(chan int, 5) // 创建一个整型通道,缓冲容量为5

如果缓冲大小为0或被省略,通道是无缓冲的。

代码语言:javascript复制
c := make(chan int) // 创建一个无缓冲的整型通道

一个被make创建的通道是双向的,但是,你也可以使用类型转换让其变为单向。

这是make的基本用法,但需要注意的是make只适用于切片、映射和通道这三种类型,而其他如整型、字符串等类型,创建时不需要make函数,可以直接声明或使用new函数来创建。例如:

代码语言:javascript复制
var x int      // 声明一个整型变量x
str := new(string) // 使用new来创建一个字符串指针

记住,make返回的是类型的实例(已初始化),而new返回的是指向该类型的指针(内存零值)。

go

0 人点赞