本文介绍了Go语言中的指针、结构体(struct)、切片(slice)和Map集合的基本概念及使用方法。首先,指针通过`&`获取变量的内存地址,并通过`*`访问该地址存储的值。接着,结构体定义了新的数据类型,包含一个或多个成员,可以通过点`.`操作符访问其字段。切片是一种灵活的数据结构,基于数组实现,支持动态扩展和切割操作。最后,Map是键值对的无序集合,可通过`make`函数或字面量创建,并提供了添加、删除和查询等操作。此外,还介绍了`range`关键字在遍历数组、切片、通道以及Map时的应用。这些特性使得Go语言在处理复杂数据结构时既高效又方便。
在 Go 语言中,`make` 是一个用于初始化切片(slice)、映射(map)和通道(channel)的内建函数。它不仅分配内存,还初始化数据结构的内部状态,使其可以直接使用。与 `new` 函数不同,`new` 只是分配内存并返回指向类型零值的指针,而不进行初始化。 - **切片**:通过 `make([]T, length, capacity)` 创建,其中 `T` 是元素类型,`length` 是长度,`capacity` 是容量(可选)。例如,`slice := make([]int, 5, 10)` 创建了一个长度为 5、容量为 10 的整数切片。 - **映射**:通过 `make(map[K]V, capacity)` 创建,其中 `K` 和 `V` 分别是键和值的类型,`capacity` 是初始容量(可选)。例如,`m := make(map[string]int)` 创建了一个空的字符串到整数的映射。 - **通道**:通过 `make(chan T, capacity)` 创建,其中 `T` 是传输的数据类型,`capacity` 是缓冲区大小(可选)。例如,`ch := make(chan int, 2)` 创建了一个容量为 2 的整数通道。 `make` 与 `new` 的主要区别在于 `make` 初始化数据结构并返回引用,而 `new` 只分配内存并返回指针。此外,文章还介绍了 Go 中的并发编程机制,包括 goroutine、channel、select 语句等,并详细解释了它们的用法和特点。