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

golang 포인터와 참조의 차이점

下次还敢
下次还敢원래의
2024-04-21 00:52:05725검색

포인터와 참조는 모두 변수에 간접적으로 액세스하는 데 사용됩니다. 포인터는 변수 주소를 가리키고 변수는 직접 액세스됩니다. 참조는 변수에 대한 포인터를 저장하고 변수에 간접적으로 액세스하는 별칭입니다. 포인터는 *로 정의되고 참조 취소되며, 포인터를 수정하면 변수에 영향을 줍니다. 참조하려면 &를 사용하여 주소를 가져오고 *를 사용하여 주소를 참조하며 참조를 수정해도 변수에는 영향을 미치지 않습니다. 포인터는 포인터를 포함하여 모든 변수를 가리킬 수 있습니다. 참조는 변수만 가리킬 수 있습니다.

golang 포인터와 참조의 차이점

Golang 포인터 및 참조

포인터와 참조의 차이점

포인터와 참조 모두 변수에 대한 간접적인 액세스를 위한 Golang의 메커니즘입니다. 주요 차이점은 다음과 같습니다.

  • 포인터는 다른 변수의 주소를 보유하는 변수입니다. 변수를 직접 가리킵니다.
  • 참조는 다른 변수에 대한 포인터를 저장하는 별칭입니다. 참조는 변수를 직접 가리키지 않습니다.

Pointers

  • 포인터를 정의하고 역참조하려면 * 표기법을 사용하세요. * 符号定义和取消引用指针。
  • 指针指向变量的值,而不是直接包含该值。
  • 对指针进行修改会影响被指向的变量。
  • 指针可以指向任何类型的变量,包括其他指针。

引用

  • 使用 & 符号获取变量的地址,使用 * 符号引用已获取的地址。
  • 引用始终指向变量的地址。
  • 修改引用不会影响被指向的变量。
  • 引用只能指向其他变量,不能指向指针。

示例

<code class="go">package main

import "fmt"

func main() {
    // 创建一个变量
    x := 10

    // 创建一个指向 x 的指针
    p := &x

    // 创建一个引用 x 的引用
    q := &x

    // 通过指针修改变量
    *p = 20

    // 引用不会影响变量
    *q++

    // 打印结果
    fmt.Println("x:", x) // 输出: 20
}</code>

在这个示例中:

  • p 是一个指向 x 的指针,对 *p 的修改会更新 x 的值。
  • q 是指向 x 的引用,对 *q 的修改不会更新 x
  • 포인터는 값을 직접 포함하지 않고 변수 값을 가리킵니다.
🎜포인터를 수정하면 가리키는 변수에 영향을 미칩니다. 🎜🎜포인터는 다른 포인터를 포함하여 모든 유형의 변수를 가리킬 수 있습니다. 🎜🎜🎜🎜Quote🎜🎜🎜🎜변수의 주소를 얻으려면 & 기호를 사용하고, 얻은 주소를 참조하려면 * 기호를 사용하세요. 🎜🎜참조는 항상 변수의 주소를 가리킵니다. 🎜🎜참조를 수정해도 지정된 변수에는 영향을 미치지 않습니다. 🎜🎜참조는 포인터가 아닌 다른 변수만 가리킬 수 있습니다. 🎜🎜🎜🎜Example🎜🎜rrreee🎜이 예에서: 🎜🎜🎜px에 대한 포인터입니다. *p 수정 사항은 x의 값입니다. 🎜🎜qx에 대한 참조이며 *q를 수정해도 x 값이 업데이트되지 않습니다. 🎜🎜

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

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