(golang make new 区别) 浅析Golang中make和new的用法区别
在Go语言中,make
和new
都是用来分配内存的内建函数,但是它们之间有一些关键的区别,并且适用于不同类型的场景。
首先来看new
函数。new(T)
会为T类型的新项分配已置零的内存空间,并返回它的地址,也就是一个*T
类型的值(指向T类型的指针)。使用new
函数分配的内存是零值初始化的。这意味着对于int类型,它会被初始化为0;对于指针类型,它会被初始化为nil等。new
主要用于值类型,如int、float、bool、arrays等的内存分配。
下面是使用new
的一个例子:
ptr := new(int) // 分配内存
*ptr = 100 // 设置值
fmt.Println(*ptr) // 输出值
在上面的例子中,new(int)
创建了一个指向int类型零值的指针。
而make
函数是专门用来创建slice、map和channel,并返回一个有初始值(非零值)的T类型,而不是*T
。这是make
和new
之间的一个主要区别。使用make
创建的slice、map、channel是被初始化了的,也就是说它们已经在内存中有了一定的空间或者结构,可以直接使用。
以下是使用make
的例子:
s := make([]int, 10) // 创建一个长度为10的slice
m := make(map[string]int) // 创建一个map
c := make(chan int) // 创建一个channel
在上述的slice示例中,我们创建了一个有10个整型零值的slice。对于map和channel,我们也分配了内存并初始化了它们的结构,可以直接在它们上进行操作。
总而言之,使用new
或make
取决于你想创建的类型:
- 使用
new
来分配值类型(如int、struct等),它会返回指向零值初始化的内存的指针。 - 使用
make
来分配slice、map和channel,它会返回初始化的对象本身,而不是指向它们的指针。
请根据你实际的开发需要选择合适的函数。
(dnf机械师95版本装备选择) DNF95版本女机械史诗套怎么选 95ss套女机械选择推荐 95级女机械师史诗套选择 全网首发(图文详解1)
(react面试) 2023年最新react面试题总结大全(附详细答案) 2023年的React面试题可能会包括各种不同的问题 全网首发(图文详解1)