转载请注明出处:

  在Go语言中,指针类型允许直接访问和修改某个变量的内存地址。通过使用指针,我们可以在函数之间共享数据或者在函数内部修改外部变量的值。

  以下是关于Go语言指针类型的一些重要语法和示例:

  1. 定义指针变量:

    • 使用*表示指针类型,并将其放置在变量类型前面。例如:var ptr *int声明了一个指向整数类型的指针变量ptr。
  2. 取址操作符(&):

    • 使用&操作符可以获取变量的内存地址。例如:x := 10; ptr := &x将x的内存地址分配给指针变量ptr。
  3. 解引用操作符(*):

    • 使用*操作符可以获取指针所指向的值。例如:y := *ptr表示获取指针ptr所指向的值,并将其赋给变量y。

  下面是一个示例代码,演示了Go语言中指针类型的使用:

package main

import "fmt"

func changeValue(ptr *int) {
    *ptr = 20 // 修改指针所指向的值为20
}

func main() {
    x := 10
    fmt.Println("初始值:", x) // 输出: 初始值: 10
    
    ptr := &x // 获取x的内存地址并分配给指针ptr
    changeValue(ptr) // 传递指针作为参数,修改指针所指向的值
    
    fmt.Println("修改后的值:", x) // 输出: 修改后的值: 20
}

  在上面的示例中,声明了一个指针变量ptr并将x的内存地址赋给它。然后,通过调用changeValue函数并传递ptr作为参数来修改x的值。由于传递的是指针而不是值的副本,因此在函数内部对指针的修改也会影响到外部变量。