在Go语言中,函数参数传递有两种方式:值传递和引用传递。
- 值传递(Pass by Value):当将一个值作为参数传递给函数时,函数会创建该值的一个副本,并将副本传递给函数。在函数内部,对参数的修改不会影响原始值。
下面是一个示例:
package main
import "fmt"
func modifyValue(x int) {
x = 10
}
func main() {
num := 5
modifyValue(num)
fmt.Println(num) // 输出 5
}
在上面的例子中,modifyValue
函数接收一个整数参数x
,并将其修改为10。但是在main
函数中,num
的值仍然是5,因为在函数调用时,num
的副本被传递给modifyValue
函数。
- 引用传递(Pass by Reference):在Go语言中,可以通过指针来实现引用传递。当将一个指针作为参数传递给函数时,函数接收的是指针的副本,但是指针指向的值是共享的。因此,对参数值的修改会影响原始值。
下面是一个示例:
package main
import "fmt"
func modifyValue(x *int) {
*x = 10
}
func main() {
num := 5
modifyValue(&num)
fmt.Println(num) // 输出 10
}
在上面的例子中,modifyValue
函数接收一个整数指针参数x
,并通过指针修改了num
的值为10。在main
函数中,通过&num
将num
的地址传递给modifyValue
函数,从而实现了对num
的引用传递。
需要注意的是,在使用引用传递时,需要确保传递的指针不为空,否则会引发空指针异常。此外,在使用引用传递时,需要谨慎处理并发访问的情况,以避免竞态条件的发生。
标签:传递,main,语言,modifyValue,参数传递,num,GO,指针,函数 From: https://blog.51cto.com/Siri/7246196