如何使用指针方法初始化指针接收器?
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
是一个结构体。 - Gravyperson
定义为一个未初始化的指向Person
结构体的指针。只是在这种情况下,不是 OP 想要的。 - Jonathan Hallperson
which has typepointer to Person
is initialized with it's zero value -nil
- Eugene Lisitsky