Go의 Go 연습 51 둘러보기에서 Scale 메서드는 효과가 없는 것으로 설명됩니다. Vertex 값에 대해. 그러나 실험에 따르면 포인터 대신 Vertex 값이 전달된 경우에도 Scale이 입력 값을 수정하는 것으로 나타났습니다.
Go의 강력한 타이핑을 위해서는 포인터 수신기가 있는 메서드가 다음과 같아야 합니다. 포인터 인수를 전달했습니다. 그러나 컴파일러는 특정 조건에서 개입하여 암시적 변환을 수행하여 값 인수를 포인터로 변환합니다.
메서드 호출 x.m()이 이루어질 때 , 컴파일러는 다음을 확인합니다.
이러한 조건이 충족되고 x가 주소 지정 가능(복사 불가)되면 컴파일러는 코드를 다시 작성합니다. (&x).m()으로. 이 변환을 통해 포인터 수신기가 있는 메소드가 포인터와 값 모두에서 작동할 수 있습니다.
이 암시적 변환은 Go 메소드 세트의 핵심 기능입니다. 프로그래머가 포인터를 명시적으로 관리하지 않고도 포인터나 값에 대해 메서드를 작동할 수 있어 코드가 단순화되고 가독성이 향상됩니다.
위 내용은 포인터 수신기를 사용하는 Go 메소드가 값 인수를 수정하는 것처럼 보이는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!