函數參數傳遞有值傳遞和參考傳遞兩種方式。值傳遞複製參數值副本,對副本的修改不影響原值。引用傳遞傳遞對參數值的引用,對引用指向值的修改會影響原值。實戰案例:使用引用傳遞的 swapStringslice() 函數交換兩個字串切片的元素。
Go 中函數參數的傳遞
#Go 語言中,函數參數可以透過值傳遞或引用傳遞。
值傳遞
值傳遞是指將參數值的一個副本傳遞給函數。這意味著任何對參數副本的修改都不會影響原始值。
func swap(a, b int) { var tmp = a a = b b = tmp } func main() { x := 10 y := 20 swap(x, y) fmt.Printf("x=%d,y=%d\n", x, y) // x=10,y=20 }
引用傳遞
參考傳遞是指將對參數的參考傳遞給函數。這意味著任何對參數引用所指向的值的修改都會影響原始值。
要在 Go 中實作參考傳遞,需要使用指標類型作為函數參數。
func swap(a, b *int) { var tmp = *a *a = *b *b = tmp } func main() { x := 10 y := 20 swap(&x, &y) // 注意此处使用指针 fmt.Printf("x=%d,y=%d\n", x, y) // x=20,y=10 }
實戰案例
以下是使用參考傳遞的實用案例:
實作一個swapStringslice()
函數,此函數交換兩個字串切片的元素。
package main import "fmt" func swapStringslice(a, b *[]string) { var tmp = *a *a = *b *b = tmp } func main() { x := []string{"a", "b", "c"} y := []string{"d", "e", "f"} swapStringslice(&x, &y) fmt.Println(x, y) // [d e f] [a b c] }
以上是golang函數參數是如何傳遞的?的詳細內容。更多資訊請關注PHP中文網其他相關文章!