Go make 介绍
Go 语言中的 make
函数用于创建和初始化特定类型的对象,主要是用于创建切片(slice)、映射(map)和通道(channel)。make
函数与 new
函数不同,new
函数是用于分配内存,而 make
则是用于初始化对象并返回一个类型的引用。下面是 make
函数的详细介绍和一些示例。
创建切片(Slice)
make
函数可以用来创建指定长度和容量的切片:
slice := make([]int, 5, 10)
这里创建了一个长度为 5、容量为 10 的 int
类型切片。make
函数的第二个参数是切片的长度,第三个参数是切片的容量。如果不指定容量,默认容量等于长度。
slice := make([]int, 5)
创建映射(Map)
make
函数也可以用来创建映射:
m := make(map[string]int)
这里创建了一个键为 string
类型、值为 int
类型的映射。
创建通道(Channel)
make
函数还可以用来创建通道:
ch := make(chan int)
这里创建了一个传递 int
类型数据的无缓冲通道。你也可以创建带缓冲的通道,指定缓冲区大小:
ch := make(chan int, 10)
使用示例
下面是一个包含切片、映射和通道的综合示例:
package main
import "fmt"
func main() {
// 创建并使用切片
slice := make([]int, 5, 10)
for i := 0; i < len(slice); i++ {
slice[i] = i * 2
}
fmt.Println("切片:", slice)
// 创建并使用映射
m := make(map[string]int)
m["one"] = 1
m["two"] = 2
fmt.Println("映射:", m)
// 创建并使用通道
ch := make(chan int, 2)
ch <- 1
ch <- 2
close(ch)
for value := range ch {
fmt.Println("通道值:", value)
}
}
总结
make
函数是 Go 语言中用于创建和初始化切片、映射和通道的内建函数。它与 new
函数不同,new
仅分配内存,而 make
则初始化对象并返回其引用。掌握 make
函数的用法,是编写高效 Go 程序的基础。