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