一、基础语法与数据结构
1. make 和 new 的区别?
- 参考答案:
new(T):为类型T分配零值内存,返回指向该内存的指针*T。它只分配内存,不初始化。make(T):只能用于slice、map和channel这三种引用类型。它分配并初始化内存,返回的是类型T本身(一个已初始化的、非零值的结构),而不是指针。
- 解析:
new很少使用,通常用&T{}结构体字面量替代。make是创建这三种类型的标准方式,因为它们内部有复杂的数据结构需要初始化(如 slice 的 len、cap、指针数组)。
2. Go 语言的 slice 底层是如何实现的?
- 参考答案:
Go 的slice是一个结构体,在运行时包含三个字段:- 一个指向底层数组的指针。

