Go에서 포인터 역참조
Go에서 포인터 역참조는 포인터가 가리키는 메모리 주소에 저장된 값에 액세스하는 것을 포함합니다. 변수.
문제:
Go 튜토리얼에서 제공하는 예에서는 포인터 역참조의 예상 동작이 발생하지 않습니다. 포인터 변수를 사용하여 구조체 값을 변경하면 변경 사항이 역참조된 구조체 복사본에 전파되지 않습니다.
설명:
t := * q 작업은 q가 가리키는 구조체의 복사본을 만듭니다. 이후에 q에 대한 변경 사항은 t에 영향을 미치지 않습니다. Go는 포인터를 값으로 처리하고 할당은 복사 작업이기 때문에 이러한 동작이 예상됩니다.
t에서 q를 통해 변경된 내용을 관찰하려면 값을 복사하는 대신 구조체에 대한 포인터를 유지해야 합니다. 대신 q를 t에 할당하면 됩니다.
t := q
C/C 비교:
Go의 포인터 역참조 동작은 C/의 동작과 유사합니다. 씨. 두 언어 모두 포인터는 값의 주소를 저장하고 이를 역참조하면 실제 값에 대한 액세스가 제공됩니다. 그러나 Go에서는 포인터에 할당하면 값이 복사되는 반면 C/C에서는 참조된 값을 직접 수정합니다.
위 내용은 Go에서 포인터를 역참조해도 원본 구조체가 업데이트되지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!