我是Go语言的新手,并且对结构很好奇。让我们定义一个结构T
type T struct {
size int
}
我已经看到了不同类型的结构初始化。有什么区别?
new(T) // 1
T{size:1} // 2
&T{size:1} // 3
以及两种类型的方法声明:
func (r *T) area() int // 1
func (r T) area() int // 2
什么是正确的方法?
new和&T {size:1}返回* T
T {size:1}返回T
内置函数new采用类型T,在运行时为该类型的变量分配存储,并返回指向它的* T类型的值。如初始值部分中所述,初始化变量。
2。
其他任何已命名类型T的方法集都包含接收者类型T的所有方法。相应指针类型* T的方法集是接收者* T或T的所有方法的集合(也就是说,它还包含方法集T)。
var pt * T
变数
函数(r * T)area()int
您可以使用pt.area()或t.area()
func(r T)area()int
您可以使用t.area(),不能使用pt.area()
通常我们使用func(r * T)area()int
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句