>백엔드 개발 >Golang >Golang 참조와 포인터의 차이점

Golang 참조와 포인터의 차이점

(*-*)浩
(*-*)浩원래의
2019-12-27 13:35:119520검색

Golang 참조와 포인터의 차이점

C 및 C++를 포함한 일부 언어는 포인터를 지원합니다. C++, Java, Python, Ruby, Perl 및 PHP를 포함한 다른 언어는 모두 인용을 지원합니다. 표면적으로 참조와 포인터는 둘 다 하나의 변수가 다른 변수에 대한 액세스를 제공하는 데 사용됩니다. > 다르다. 이번 글에서는 포인터와 참조의 차이점에 대해 설명하겠습니다.

이것이 중요한 이유

포인터는 Go 언어의 핵심입니다. 대부분의 프로그래머는 위에서 언급한 언어 중 하나를 기반으로 Go를 배웁니다. 따라서 Go를 이해하려면 포인터와 참조의 차이점을 이해하는 것이 중요합니다.

포인터가 있는 언어를 사용했더라도 Go의 포인터 구현은 C 및 C++와 다릅니다. 포인터의 기능을 유지하면서 참조의 좋은 속성 중 일부를 유지하기 때문입니다. 이 문서의 나머지 부분에서는 특정 구현이 아닌 참조된 개념을 광범위하게 논의하기 위해 작성되었습니다. Go를 포인터의 참조 구현으로 사용하겠습니다.

차이점은 무엇인가요?

포인터 변수는 다른 변수의 주소를 저장합니다. 참조 변수는 다른 변수를 가리킵니다.

이 점을 증명하기 위해 포인터와 참조를 모두 지원하는 C++를 예로 들어 보겠습니다.

int i = 3;2int *ptr = &i;3int &ref = i;

첫 번째 줄은 변수 i를 정의하고, 두 번째 줄은 변수 i의 메모리 주소를 가리키는 포인터 ptr을 정의합니다. 세 번째 줄은 변수 i를 가리키는 참조 참조를 정의합니다.

연산자가 다를 뿐만 아니라 사용하는 방법도 다릅니다. 포인터의 경우 역참조하려면 * 연산자를 사용해야 합니다. 참고로 연산자는 필요하지 않습니다. 인용된 변수를 사용하는 경향이 있는 것으로 이해됩니다.

계속해서 예제를 진행하면 다음 두 코드 줄은 모두 i 값을 13으로 변경합니다.

ptr = 13;
ref = 13;

역참조를 사용하지 않고 ptr 변수에 직접 액세스하려고 하면 물어볼 수도 있습니다. 이는 포인터와 참조 사이의 두 번째 주요 차이점을 보여줍니다. 포인터는 재할당될 수 있지만 참조는 재할당될 수 없습니다. 즉, 포인터에 다른 주소가 할당될 수 있습니다.

위 내용은 Golang 참조와 포인터의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.