"Cannot Take the Address Of" 및 "Cannot Call Pointer Method On" 오류 이해
Go로 작업할 때 오류가 발생할 수 있습니다. "주소를 가져올 수 없습니다" 또는 "포인터 메서드를 호출할 수 없습니다"와 같은 말은 학습하는 사람들을 혼란스럽게 합니다. 언어.
문제:
다음 Go 코드를 고려하세요.
diff := projected.Minus(c.Origin) dir := diff.Normalize() // error: cannot call pointer method on Vector3 // Vector3 methods func (a *Vector3) Minus(b Vector3) Vector3 { ... } func (a *Vector3) Normalize() Vector3 { ... }
두 번째 줄에서는 Vector3.Normalize() 때문에 컴파일 오류가 발생합니다. 포인터 수신기가 필요합니다. 즉, Vector3 대신 Vector3 값(*Vector3)에 대한 포인터가 필요합니다. value.
발생 원인:
Go에서는 함수 및 메서드 호출의 반환 값을 처리할 수 없습니다. 따라서 두 번째 예에서 컴파일러는 Vector3.Minus() 결과의 주소를 가져올 수 없으므로 해당 값에 대해 Normalize()를 호출할 수 없습니다.
가능한 해결 방법:
위 내용은 Go 함수 호출 결과에 대해 포인터 메서드를 호출할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!