new()와 "&" 연산자의 차이점
Go에서는 new() 함수와 "&" 메모리 주소 연산자는 둘 다 메모리를 할당하는 데 사용됩니다. 그러나 사용법에는 약간의 미묘한 차이가 있습니다.
기능 비교
new() 및 & 연산자는 모두 새로 할당된 메모리 주소에 대한 포인터를 반환합니다. 그러나 구문은 다릅니다.
유형 분석
제공된 코드 예제에서 볼 수 있듯이 리플렉션은 분석에 따르면 &Vector{}와 new(Vector)는 둘 다 Vector 구조체의 인스턴스에 대한 포인터이므로 동일한 유형의 포인터를 반환합니다.
역사적 혼란
Go 메일링 리스트에서는 메모리 할당에 new()와 &를 모두 사용하는 것에 대해 이전에 논의한 바 있는데, 이는 혼란을 초래할 수 있기 때문입니다.
특수 사례
주목할 가치가 있습니다. new()는 정수와 같이 명명되지 않은 기본 유형에 대한 포인터를 얻는 유일한 방법입니다. 이는 다음 예제에서 볼 수 있습니다:
p := new(int) // valid p := &int{0} // invalid
기본 설정 및 사용법
궁극적으로 메모리 할당에 new()와 &를 사용하는 것 사이의 선택은 크게 다음의 문제입니다. 개인적인 취향. 두 방법 모두 동일한 기능을 가지며 동일한 결과를 생성합니다. 하지만 두 연산자의 미묘한 차이점을 인지하고 특정 요구사항에 따라 적절하게 사용하는 것이 중요합니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3