go 函数调用有两种方式:值传递和引用传递。值传递将变量的副本传递给函数,不影响原始变量的值;引用传递将变量的地址传递给函数,任何修改都将影响原始变量的值。在实战中,add 函数使用值传递,multiply 函数使用引用传递,以不同的方式修改变量的值。
Go 函数的调用方式
在 Go 语言中,函数调用可以通过值传递和引用传递两种方式实现。
值传递
值传递将一个变量的副本传递给函数,这意味着函数内的任何修改都不会影响原始变量的值。
package main
import "fmt"
func add(x int) int {
x++ // 修改 x 的副本
return x
}
func main() {
y := 5
newY := add(y) // 传递 y 的副本
fmt.Println(newY) // 输出 6
fmt.Println(y) // 输出 5
}
引用传递
引用传递将一个变量的地址传递给函数,这意味着函数内对该变量的任何修改都会影响原始变量的值。
package main
import "fmt"
func add(x *int) {
*x++ // 修改 x 指向的值
}
func main() {
y := 5
add(&y) // 传递 y 的地址
fmt.Println(y) // 输出 6
}
实战案例
在以下代码中,我们定义了两个函数:Add
和 Multiply
。Add
使用值传递,而 Multiply
使用引用传递。
package main
import "fmt"
func Add(x int) {
x++
}
func Multiply(x *int) {
*x *= 2
}
func main() {
a := 5
Add(a) // 调用 Add,使用值传递
fmt.Println(a) // 输出 5(值不变)
b := 10
Multiply(&b) // 调用 Multiply,使用引用传递
fmt.Println(b) // 输出 20(值已修改)
}
以上就是golang函数的调用方式的详细内容,更多请关注编程网其它相关文章!