美文网首页
理解 Go make 和 new

理解 Go make 和 new

作者: 禹声 | 来源:发表于2021-10-22 16:40 被阅读0次

都是用来分配空间,初始化【类型】

new(t):

分配一个空间,放进去t的零值,放回指针

var a *int  等价  a := new(int)
var a int  不等价  a := new(int)
&[]model.HbUser{}  等价  new([]model.HbUser)

但是var a *int 这种不是很好用吗,用new干啥

make:

只能用在引用类型 slice、map、channel

有可能是因为引用类型需要额外参数创建,才单独搞出来一个make吧

返回的是引用类型
不是引用类型的指针
不是零值

selice/map 的零值是nil,但是make是初始化,他知道了要创建多大的selice/map,所以会分配一个地方给变量。
var a []int 这种是零值 nil。因为此时并不知道a是个多大的selice,所以没有分配地方给a
a := []int{} 这种是空selice。因为此时已经知道了是个0大小的selice,所以直接分配匹配地方给a

相关文章

  • 理解 Go make 和 new

    都是用来分配空间,初始化【类型】 new(t): 分配一个空间,放进去t的零值,放回指针 但是var a *int...

  • Go - 常见问题

    make和new new(T) 和 make(T, args) 是Go语⾔内建函数,⽤来分配内存,但适⽤的类型不⽤...

  • Go语言中new和make的区别

    转载自Go语言中new和make的区别 Go语言中new和make是内建的两个函数,主要用来创建分配类型内存。在我...

  • Go学习总结笔记(一)

    go version 1.13 基础语法 1. new(T) 和 make(T,args) 的区别? new(T)...

  • Golang中make与new有何区别?

    Golang中make与new有何区别? 一、前言 本文主要给大家介绍了Go语言中函数new与make的使用和区别...

  • go的new和make创建引用类型的问题

    go的引用类型包含 slice、map、channel 内置函数new和make创建引用类型的区别:new:会根据...

  • 2018-05-05 Go 语言中 make 和 new 的区别

    背景介绍 make new make vs. new 代码样例 参考文档 背景介绍 学习Go的时候,遇到了 mak...

  • go语言视频讲解机会

    本文是的go语言系列视频的目录 go语言中的make和new(https://www.bilibili.com/v...

  • Go语言的new和make

    在go语言中, 通过var声明变量时, 不指定默认值时, 就是使用他们的零值。 例如int类型的零值是0,stri...

  • Go make 和 new 的区别

    new(T) 返回的是 T 的指针 new(T) 为一个 T 类型新值分配空间并将此空间初始化为 T 的零值,返回...

网友评论

      本文标题:理解 Go make 和 new

      本文链接:https://www.haomeiwen.com/subject/jezcaltx.html