首页 > 文章列表 > golang 函数返回后不改变指针?

golang 函数返回后不改变指针?

golang
234 2023-05-18

问题内容

golang 函数返回后不改变指针

正确答案

在Go语言中,函数参数通过值传递。当你将一个指针传递给函数时,函数接收到的是指针的副本,而不是指针本身。因此,即使函数修改了指针指向的值,原始指针的值不会改变。

如果你希望在函数内部修改指针的值,并且使其在函数返回后保持修改后的值,你需要传递指针的指针或者使用返回值来更新原始指针。

以下是一个示例代码,演示了如何在函数内部修改指针的值并保持修改后的值:

package main

import "fmt"

func updatePointer(ptr *int) {
    *ptr = 42 // 修改指针指向的值为42
}

func main() {
    var num int = 10
    fmt.Println("Before:", num) // 输出 "Before: 10"

    updatePointer(&num) // 传递指针的地址给函数

    fmt.Println("After:", num) // 输出 "After: 42"
}