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

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

happinessaflower·2015-06-17 20:03:41· 13036 次点击 ·预计阅读时间 1 分钟·大约1分钟之前开始浏览

这是一个创建于2015-06-17 20:03:41的文章,其中的信息可能已经有所发展或是发生改变。

new()

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

在golang的代码定义如下:

funcnew(tType) *Type

strut{}

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

两者对比代码如下:

typeStudentstruct{    idintnamestring}funcmain(){vars_1 *Student =new(Student)    s_1.id = 100s_1.name ="cat"vars_2 Student = Student{id:1,name:"tom"}    fmt.Println(s_1,s_2)}

输出结果:

&{100 cat} {1 tom}

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 5,808评论 0 9
  • Scala与Java的关系 Scala与Java的关系是非常紧密的!! 因为Scala是基于Java虚拟机,也就是...
    灯火gg阅读 8,806评论 1 24
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,901评论 18 399
  • Go语言中,也和C或者其他语言一样,我们可以声明新的类型,作为其它类型的属性或字段的容器。 结构体定义 type ...
    副班长国伟阅读 4,336评论 0 1
  • 认识和了解舍恩,是在北京大学跟着陈向明老师学习的时候,她第一次让我知道了”反映的实践者”这一概念,也知道了专...
    学者茶馆阅读 5,075评论 0 1