在 Golang 中,函数参数传递默认是按值传递的,这意味着函数接收到的是实参的一个副本。如果函数内部修改了参数的值,实参并不会被改变。
但是,如果传递给函数的是指针类型参数,则可以通过指针来修改原始数据。这意味着在函数中对指针所指向的值进行修改时,实际上是在改变原始数据。
下面是一个示例代码:
package main
import "fmt"
func main() {
num := 10
fmt.Println("Before calling modify function:", num)
modify(&num)
fmt.Println("After calling modify function:", num)
}
func modify(num *int) {
*num = 20
}
输出结果为:
Before calling modify function: 10
After calling modify function: 20
可以看到,在调用 modify 函数时传递了 num 的地址(使用 & 取地址符),并且在 modify 函数中使用解引用符号 * 来获取该地址所对应的值,并将其修改为 20。因此,在调用 modify 函数后,原始数据 num 的值也被修改为 20。
总之,在 Golang 中,默认情况下不能在函数中直接修改实参的值,除非传递给函数的是指针类型参数。




