如何用指針方法初始化指針接收器?用指針方法初始化指針接收器進入
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' –