어떻게 포인터 메서드로 포인터 수신기를 초기화 할 수 있습니까?포인터 메서드에서 포인터 수신기 초기화하기
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'은 구조체입니다. – Gravy
@Gravy 물론 이치에 맞습니다. 'Person'을'Person' 구조체에 대한 초기화되지 않은 포인터로 정의합니다. 이 경우 OP가 원하는 것은 아닙니다. – Flimzy
'person '에 대한 포인터를 가진'person'은 0 값으로 초기화됩니다 -'nil' –