아래 코드를 참조하십시오. 포인터가 아닌 수신기가 포인터와 비 포인터 값을 받아 들일 수 있지만 포인터 수신기는 포인터 값만 받아 들일 수 있다는 사실을 알고 있습니다. 즉, 나는 마지막 호출이 어떻게 작동하는지 이해하지 못하고 두 번째 마지막 호출은 이해하지 못한다. (Run Here)포인터 값이 아닌 호출 포인터 수신자 메서드
문제는 포인터가 아닌 메서드에서 포인터 수신기 메서드를 호출 할 수 있다는 것입니다. 이는 other similar question에 설명되어 있지 않습니다. 그 대답은 포인터 호출 포인터 수신기 메서드에 대해서만 설명합니다.
package main
import (
"fmt"
)
type person struct {
name string
}
type human interface {
speak() string
}
func (p *person) speak() string {
return "Speak() called by " + p.name
}
func saySomething(h human) {
fmt.Println("area", h.speak())
}
func main() {
p := person{"harsh"}
//works
saySomething(&p)
//doesn't work
//saySomething(p)
//works
p.speak()
}
포인터 수신기가있는 [골란 (Golang) 방법]의 가능한 복제본 (https://stackoverflow.com/questions/33936081/golang-method-with-pointer-receiver) – Marc
제목에 대한 좋은 읽기 : https : // blog .golang.org/reflection of laws – Kaedys