> 백엔드 개발 > Golang > Golang에서 값에 의한 전달과 참조에 의한 전달의 유사점과 차이점

Golang에서 값에 의한 전달과 참조에 의한 전달의 유사점과 차이점

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
풀어 주다: 2024-04-12 11:03:01
원래의
897명이 탐색했습니다.

Go 언어에는 변수를 전달하는 두 가지 방법이 있습니다. 값 전달: 변수의 복사본이 전달되며 원래 변수는 영향을 받지 않습니다. 참조로 전달: 변수의 주소를 전달하면 함수가 원래 변수에 액세스하고 수정할 수 있습니다.

Golang에서 값에 의한 전달과 참조에 의한 전달의 유사점과 차이점

Go 언어의 값 전달과 참조 전달의 유사점과 차이점

Go 언어에서는 변수를 전달하는 두 가지 방법, 즉 값 전달과 참조 전달이 있습니다. 둘 사이의 차이점을 이해하는 것은 코드를 작성할 때의 동작 방식에 영향을 미치므로 중요합니다.

값으로 전달

변수가 값으로 전달되면 변수의 복사본이 함수나 메서드에 전달됩니다. 즉, 원래 변수는 함수의 변경 사항에 영향을 받지 않습니다.

func changeValue(x int) {
    x = 100
}

func main() {
    a := 5
    changeValue(a)
    fmt.Println(a) // 输出 5,因为原始值没有改变
}
로그인 후 복사

위의 예에서 changeValue 함수는 값이 5인 int를 매개변수로 사용합니다. 이 매개변수를 수정하면 원본 변수가 아닌 복사본만 수정됩니다. changeValue 函数将一个值为 5 的 int 作为参数。当对该参数进行修改时,它只会修改副本,而不会修改原始变量。

引用传递

当以引用方式传递变量时,变量的地址被传递给函数或方法。这意味着函数可以访问并修改原始变量。

使用指针来实现引用传递。指针变量存储变量的地址。如下所示:

func changeReference(x *int) {
    *x = 100
}

func main() {
    a := 5
    changeReference(&a)
    fmt.Println(a) // 输出 100,因为原始值被修改
}
로그인 후 복사

在这个示例中,changeReference 函数接受一个指向整数的指针作为参数。当函数对 *x 进行修改时,它实际上是对指向 a 变量的地址进行修改,从而修改了 a

참조로 전달

변수가 참조로 전달되면 변수의 주소가 함수나 메서드에 전달됩니다. 이는 함수가 원래 변수에 액세스하고 수정할 수 있음을 의미합니다.
  • 참조로 전달하려면 포인터를 사용하세요. 포인터 변수는 변수의 주소를 저장합니다. 아래와 같이: rrreee이 예에서 changeReference 함수는 정수에 대한 포인터를 매개변수로 받아들입니다. 함수가 *x를 수정하면 실제로 a 변수를 가리키는 주소가 수정되어 a의 원래 값이 수정됩니다.
  • 요약
🎜🎜 값 전달 🎜: 변수의 복사본을 전달합니다. 원래 변수는 함수의 변경 사항에 영향을 받지 않습니다. 🎜🎜🎜참조로 전달🎜: 변수의 주소를 전달하면 함수가 원래 변수에 액세스하고 수정할 수 있습니다. 🎜🎜

위 내용은 Golang에서 값에 의한 전달과 참조에 의한 전달의 유사점과 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿