【发布时间】:2017-03-17 10:36:45
【问题描述】:
如何用指针方法初始化指针接收器?
package main
import "fmt"
type Person struct {
name string
age int
}
func (p *Person) Born() {
if nil == p {
p = new(Person)
}
}
func main() {
var person *Person
person.Born()
if person == nil {
fmt.Println("This person should be initialized. Why is that not the case?")
}
fmt.Println(person)
}
人们会期望在调用作为指针接收器的 .Born() 方法之后将人初始化(归零)。但事实并非如此。有人可以对此有所了解吗?
【问题讨论】:
-
var person *Person没有意义。Person是一个结构体。 -
@Gravy 当然有道理。它将
person定义为指向Person结构的未初始化指针。在这种情况下,这不是 OP 想要的。 -
person类型为pointer to Person的初始化为零 -nil