golang 内置函数new() 和struct{} 初始化的区别

happinessaflower · · 17170 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

new()
这是一个用来分配内存的内置函数,它的第一个参数是一个类型,不是一个值,它的返回值是一个指向新分配的 t 类型的零值的指针。

在golang的代码定义如下:

func new(t Type) *Type 

strut{}
直接使用struct{} 来初始化strut时,返回的是一个struct类型的值,而不是指针两者是不一样的

两者对比代码如下:

type Student struct{
    id int
    name string
}

func main(){
    var s_1 *Student = new(Student)
    s_1.id = 100
    s_1.name = "cat"
    var s_2 Student = Student{id:1,name:"tom"}
    fmt.Println(s_1,s_2)
}

输出结果:
&{100 cat} {1 tom}

从上面代码的声明和打印的结果中就可以看出 s_1 的类型为指针,s_2 为一个Student类型

本文来自:CSDN博客

感谢作者:happinessaflower

查看原文:golang 内置函数new() 和struct{} 初始化的区别

入群交流(和以上内容无关):Go中文网 QQ 交流群:729884609 或加微信入微信群:274768166 备注:入群;关注公众号:Go语言中文网

17170 次点击  ∙  1 赞  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传