在 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 中,默认情况下不能在函数中直接修改实参的值,除非传递给函数的是指针类型参数。