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(值已修改)
}
登錄后復制






