new()와 "&" 연산자의 차이점
Go에서는 new() 함수와 "&" 메모리 주소 연산자는 둘 다 메모리를 할당하는 데 사용됩니다. 그러나 사용법에는 약간의 미묘한 차이가 있습니다.
기능 비교
new()와 & 연산자는 모두 새로 할당된 메모리 주소에 대한 포인터를 반환합니다. 그러나 구문은 다릅니다.
유형 분석
제공된 코드 예제에서 볼 수 있듯이 리플렉션은 분석에 따르면 &Vector{}와 new(Vector)는 둘 다 Vector 구조체의 인스턴스에 대한 포인터이므로 동일한 유형의 포인터를 반환합니다.
역사적 혼란
Go 메일링 리스트에서는 이전에 new()와 & for 메모리 할당에 대한 우려를 논의한 바 있는데, 이는 혼란을 초래할 수 있기 때문입니다.
특수 사례
주목할 가치가 있습니다. new()는 정수와 같이 명명되지 않은 기본 유형에 대한 포인터를 얻는 유일한 방법입니다. 이는 다음 예에서 볼 수 있습니다.
p := new(int) // valid p := &int{0} // invalid
기본 설정 및 사용법
결국 메모리 할당에 new()를 사용할 것인지 &를 사용할 것인지 선택하는 것은 크게 개인 취향의 문제. 두 방법 모두 동일한 기능을 가지며 동일한 결과를 생성합니다. 하지만 두 연산자의 미묘한 차이점을 인지하고 구체적인 요구사항에 따라 적절하게 사용하는 것이 중요합니다.
위 내용은 Go의 'new()' 함수와 '&' 메모리 주소 연산자의 차이점은 무엇인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!