Go内置函数make和new的区别?

2023-08-11 14:36:42 阅读:723 评论:0 点赞:0

初始化变量一般分为两步:变量声明 + 变量内存分配,在 Go 语言中 var 关键字用来声明变量的,若声明变量是值类型系统会默认为他分配内存空间,并赋该类型的零值。

如果是声明指针类型或者引用类型的变量,系统不会为它分配内存,默认就是 nil。如果此时使用该变量将导致系统异常奔溃,即必须进行内存分配后才能使用。而 makenew 两个函数的作用是用来分配内存空间的。

其中 make 只能用来分配及初始化类型为 slicemapchan 的变量,而 new 可以分配任意类型的数据,并且置零。

make 函数返回的是 slice、map、chan 类型本身,它们是引用类型,就没有必要返回他们的指针;而 new 函数的则返回一个指向该类型内存地址的指针。

// make
func make(t Type, size ...IntegerType) Type

// new
func new(Type) *Type
标签: go make new 内存分配

不拘一格

职业:后端开发工程师
学校:重庆师范大学
城市:重庆
文章:165
一个喜欢学习的人,快来和我成为朋友吧....

登录逐梦笔记

注册逐梦笔记

已有账号?