go 语法里变量前面增加&、*区别

在 Go 语言中,& 和 * 是与指针相关的两个重要操作符,它们的作用如下:

简单理解:

  • a为变量,&a获取指针地址
  • a为指针,*a获取值

& 操作符

  • 作用:获取变量的内存地址(取地址操作符)
  • 用法:&variable 返回该变量的指针(即指向该变量的地址)
var x int = 10
ptr := &x  // ptr 是一个指向 x 的指针

* 操作符
作为指针声明

  • 作用:声明指针类型
  • 用法:*Type 表示指向 Type 类型的指针
var ptr *int  // 声明一个指向 int 的指针

作为解引用操作符

  • 作用:获取指针指向的值(解引用操作符)
  • 用法:*pointer 返回指针指向的值
var x int = 10
var ptr *int = &x
value := *ptr  // value = 10,获取 ptr 指向的值

示例对比

package main

import "fmt"

func main() {
    x := 10
    
    // & 获取地址
    ptr := &x
    fmt.Printf("x 的值: %d\n", x)           // 输出: 10
    fmt.Printf("x 的地址: %p\n", &x)        // 输出: x 的内存地址
    fmt.Printf("ptr 的值: %p\n", ptr)       // 输出: x 的内存地址
    fmt.Printf("ptr 的类型: %T\n", ptr)     // 输出: *int
    
    // * 解引用
    value := *ptr
    fmt.Printf("通过指针访问的值: %d\n", value)  // 输出: 10
    fmt.Printf("ptr 指向的值: %d\n", *ptr)      // 输出: 10
    
    // 修改指针指向的值
    *ptr = 20
    fmt.Printf("修改后 x 的值: %d\n", x)        // 输出: 20
}

 

posted @ 2025-09-25 19:50  使用D  阅读(6)  评论(0)    收藏  举报