卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章48378本站已运行31116

golang 指针和引用区别

指针和引用均用于间接访问变量:指针指向变量地址,直接访问变量。引用是别名,存储指向变量的指针,间接访问变量。指针用 * 定义和取消引用,修改指针会影响变量。引用用 & 获取地址,* 引用地址,修改引用不影响变量。指针可指向任何变量,包括指针;引用只能指向变量。

golang 指针和引用区别

Golang 指针和引用

指针和引用之间的区别

指针和引用都是 Golang 中用于间接访问变量的机制。主要区别在于:

  • 指针是一个保存另一个变量地址的变量。它直接指向该变量。
  • 引用是一个别名,它存储指向另一个变量的指针。引用不直接指向变量。

指针

  • 使用 * 符号定义和取消引用指针。
  • 指针指向变量的值,而不是直接包含该值。
  • 对指针进行修改会影响被指向的变量。
  • 指针可以指向任何类型的变量,包括其他指针。

引用

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

示例

<code class="go">package main

import "fmt"

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

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

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

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

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

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

在这个示例中:

  • p 是一个指向 x 的指针,对 *p 的修改会更新 x 的值。
  • q 是指向 x 的引用,对 *q 的修改不会更新 x 的值。
卓越飞翔博客
上一篇: golang内存逃逸会导致什么问题
下一篇: 返回列表
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏