如何用指针方法初始化指针接收器?用指针方法初始化指针接收器进入
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()方法,它是一个指针接收器之后被初始化(清零)。但事实并非如此。有人可以对此有所了解吗?
'变种人* Person'没有意义。 'Person'是一个结构体。 – Gravy
@Gravy肯定是有道理的。它将'person'定义为一个未初始化的指向'Person'结构体的指针。这不是OP在这种情况下想要的。 – Flimzy
'具有'指向Person'类型的'person'被初始化为零值 - 'nil' –