함수에 포인터를 전달하면 참조하는 값을 수정할 수 있습니다. 하지만 이 작업을 올바르게 수행하려면 포인터의 내부 작동 방식을 이해해야 합니다.
포인터가 가리키는 값을 수정하려면 포인터를 역참조하는 것이 필수적입니다. Go에서는 별표 연산자(*)가 이 목적으로 사용됩니다. 포인터를 역참조하면 포인터가 가리키는 기본 값에 액세스할 수 있습니다.
주요 차이점은 포인터 값 변경과 포인터 값 변경 사이에 있습니다. 을 가리킨다. 포인터 변수에 새 값을 할당하면 저장되는 주소만 변경됩니다. 예를 들어 아래 코드 조각은 가리키는 값을 수정하지 않습니다.
<code class="go">func f(p *Test) { p = &Test{4} }</code>
지정된 값을 수정하려면 역참조 연산자를 사용해야 합니다. 이는 명시적으로 또는 암시적으로 수행할 수 있습니다.
명시적 역참조:
<code class="go">func f(p *Test) { *p = Test{4} }</code>
암시적 역참조:
<code class="go">func f(p *Test) { p.Value = 4 }</code>
두 경우 모두 p가 가리키는 값이 변경됩니다.
포인터에 포인터를 전달(*Test)하면 주 함수에 저장된 포인터 값을 수정할 수 있습니다. . 그러나 원래 포인터가 가리키는 값은 변경되지 않습니다.
<code class="go">func f(p **Test) { *p = &Test{4} }</code>
요약하자면, 포인터를 함수에 전달할 때 포인터 값을 수정하는 것과 그 값을 수정하는 것의 차이점을 이해하는 것이 중요합니다. 을 가리킨다. 후자의 작업을 수행하려면 기본 데이터 값을 수정할 수 있도록 포인터 역참조가 필수적입니다.
위 내용은 Go에서 포인터에 의해 역참조된 값을 어떻게 수정합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!