最近老是看到一些面试的视频,对于视频内部面试所提到的八股文,感觉是知道是什么,但是要说的话,却又不知道该怎么说(要不咋称之为八股文呢),所以就想到写一篇八股文总结的博客,以便进行学习和复习。
目前的计划安排是一天完成一道,具体是哪个主题的不一定,尽可能做到一天一道,慢慢丰富起内容。
golang基础
1、golang中new和make的作用,以及他们的区别
自己想的(可以忽略),直接看下面标准答案:
new:new的作用就是传入一个类型,创建一个对象,并返回这个对象的指针。
make:make就是为slice、map、chan、channel初始化空间
区别:没啥区别呀,就不是一个东西😥。(呃呃呃,自己脑子里的就是不靠谱)
标准回答:
new函数的作用
- 在 Go 语言中,
 new是一个内置函数。它的主要作用是分配内存,并且将这块内存初始化为零值,然后返回指向这块内存的指针。
make函数的作用
make也是 Go 语言中的一个内置函数,但它和new有不同的用途。make主要用于创建切片(slice)、映射(map)和通道(channel)这三种复合类型,并且返回一个初始化后的(非零值)对象。- 对于切片,
 make会分配一个底层数组,并返回一个切片对象,这个切片对象包含了长度(len)和容量(cap)信息。例如,make([]int, 2)会创建一个长度为2的int类型切片,其底层数组已经被分配并且元素被初始化为int类型的零值(也就是0)。- 对于映射,
 make会创建一个空的映射,这个映射可以用于存储键 - 值对。例如,make(map[string]int)会创建一个键为string类型,值为int类型的空映射。- 对于通道,
 make会创建一个通道,可以用于在不同的goroutine之间进行通信。例如,make(chan int)会创建一个int类型的通道。
new和make的区别
- 功能用途不同
 
new主要用于分配内存并返回指向该内存的指针,它可以用于任何类型,只要你想得到一个指向该类型零值的指针。而make主要用于初始化并返回切片、映射和通道这三种复合类型,它返回的是一个已经初始化的非零值对象。- 返回值类型不同
 
new返回的是一个指针,类型是*T(T是你传入的类型)。例如new(int)返回*int。而make返回的是切片、映射或通道本身,例如make([]int, 5)返回[]int类型的切片,make(map[string]int)返回map[string]int类型的映射,make(chan int)返回chan int类型的通道。- 内存初始化不同
 
new只是将分配的内存清零,也就是将值初始化为该类型的零值。而make对于切片会分配底层数组并初始化元素;对于映射会创建一个空的可以存储键 - 值对的数据结构;对于通道会创建一个可以用于通信的通道对象,这些初始化过程比new的简单清零操作更复杂。




















