Go 语言中,函数的参数传递--值传递
在 Go 语言中,函数的参数传递是值传递的方式。当函数被调用时,函数参数的值会被拷贝到函数的参数变量中。
对于指针类型的参数,指针本身也是以值的方式进行传递。这意味着函数内部的指针参数将获得原始指针的拷贝,但这个拷贝仍然指向相同的内存地址。
当在函数内部修改通过指针传递的变量时,由于指针本身是值传递的,原始指针的拷贝在函数内部会指向同一块内存地址,因此对指针所指的变量的修改将反映在函数外部。
下面是一个示例代码,演示了指针参数的值传递:
go
func modifyPointer(ptr *int) {
*ptr = 42
}
func main() {
var value int = 10
fmt.Println("Before:", value) // 输出: Before: 10
modifyPointer(&value)
fmt.Println("After:", value) // 输出: After: 42
}
在上述示例中,modifyPointer 函数接受一个指向整型的指针作为参数,并将指针所指的变量修改为 42。在 main 函数中,我们声明了一个整型变量 value,然后通过 &value 将其地址传递给 modifyPointer函数。当函数执行完毕后,value 的值已经被修改为 42。
总结起来,虽然指针本身是通过值传递的方式进行传递,但是通过指针可以修改函数外部的变量,因为指针拷贝后仍然指向相同的内存地址。这使得我们可以在函数内部修改通过指针传递的变量。

浙公网安备 33010602011771号