golang中new()和make()的区别
make 只适用于3种内建的引用类型:切片、map 和 channel。make(T) 返回一个类型为 T 的初始值,不是指针
new(T) 返回类型为*T; 即new(某个结构体),得到的结果是该结构体的指针; new 适用于值类型,如数组和结构体;new(T)相当于&T{}
new一般不常用,而用&T{}代替
小问题: 如下输出为true还是false?
1 | package main |
当LogParamter
为空结构体时,输出为:
1 | {} |
当LogParamter
为
1 | type LogParamter struct { |
时,输出为:
1 | {} |
如果不比较指针而直接比较值, 若LogParamter
中某个字段的类型不能判等,即如:
1 | package main |
则直接编译不通过
只有在结构体的所有字段类型全部支持判等时,才可做(值)判断操作
原文作者: fliter
原文链接:
http://www.dashen.tech/2017/06/18/golang中new-和make-的区别/版权声明: 转载请注明出处