오늘 이동 둘러보기 작업. 구조체에 대한 포인터와 연관된 메소드에 구조체 리터럴을 전달할 수 있고 그 반대의 경우도 있음을 알았습니다. 왜 이것이 허용됩니까?방법 수신기 모호성
package main
import (
"fmt"
)
type Vertex struct {
X, Y float64
}
func (v Vertex) Scale (f float64) {
v.X = v.X * f
v.Y = v.Y * f
}
func (v *Vertex) ScaleP(f float64) {
v.X = v.X * f
v.Y = v.Y * f
}
func main() {
v := &Vertex{3, 4}
vLiteral := Vertex{3, 4}
v.Scale(5)
fmt.Println(v)
v.ScaleP(5)
fmt.Println(v)
vLiteral.Scale(5)
fmt.Println(vLiteral)
vLiteral.ScaleP(5)
fmt.Println(vLiteral)
}
출력 :
&{3 4}
&{15 20}
{3 4}
{15 20}
도 참조 [이 (http://stackoverflow.com/q/13326099/ 720999) 및 [this] (http://stackoverflow.com/q/13303254/720999). – kostix