前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >make vs. new

make vs. new

作者头像
孟斯特
发布2023-10-25 12:44:28
1500
发布2023-10-25 12:44:28
举报
文章被收录于专栏:code人生code人生

在Go编程中,makenew 是两个常用的内置函数,用于创建和初始化不同类型的数据结构。下面将简单介绍这两个函数以及它们的用法。

1. make 函数

make 函数主要用于创建切片(slice)、映射(map)和通道(channel)。它返回一个被初始化的、可以直接使用的数据结构。下面是 make 函数的基本语法:

代码语言:javascript
复制
make(T, size)

其中,T 是数据结构的类型,如切片、映射或通道,而 size 是容量参数。对于不同的数据结构,size 的含义略有不同:

1.1 切片(slice)

对于切片,size 表示切片的容量(capacity),它决定了切片可以包含多少元素。切片的长度(length)将自动初始化为0。

代码语言:javascript
复制
slice := make([]int, 5) // 创建一个整数切片,容量为5

1.2 映射(map)

对于映射,size 表示映射的初始容量。这有助于提高映射的性能,但不是必需的。

代码语言:javascript
复制
mymap := make(map[string]int, 10) // 创建一个字符串到整数的映射,初始容量为10

1.3 通道(channel)

对于通道,size 表示通道的缓冲区大小,如果为0表示无缓冲通道,否则表示有缓冲通道。

代码语言:javascript
复制
ch := make(chan int, 5) // 创建一个整数通道,带有5个缓冲区

2. new 函数

new 函数用于创建指向新分配的零值的指针。它主要用于创建结构体(struct)和基本数据类型的实例。以下是 new 函数的基本语法:

代码语言:javascript
复制
new(T)

其中,T 是类型的名称,例如结构体、整数或字符串。new 函数返回一个指向类型 T 的零值的指针。

代码语言:javascript
复制
var i *int
i = new(int) // 创建一个整数的指针,并将其赋给变量 i

3. makenew 的区别

1.返回类型不同:make 返回已初始化的数据结构,而 new 返回一个指向零值的指针。2.使用场景不同:make 用于切片、映射和通道的创建,而 new 用于创建自定义数据类型的实例。3.零值处理:make 返回的数据结构已被初始化,而 new 返回的指针指向零值。4.内存分配:make 会为数据结构分配所需的内存,而 new 只会为指针分配内存。

声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)[1]进行许可,使用时请注明出处。 Author: mengbin[2] blog: mengbin[3] Github: mengbin92[4] cnblogs: 恋水无意[5]

References

[1] 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0): https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh [2] mengbin: mengbin1992@outlook.com [3] mengbin: https://mengbin.top [4] mengbin92: https://mengbin92.github.io/ [5] 恋水无意: https://www.cnblogs.com/lianshuiwuyi/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-10-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 孟斯特 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. make 函数
    • 1.1 切片(slice)
      • 1.2 映射(map)
        • 1.3 通道(channel)
        • 2. new 函数
        • 3. make 与 new 的区别
          • References
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档