首頁 >後端開發 >Golang >golang函數參數是如何傳遞的?

golang函數參數是如何傳遞的?

WBOY
WBOY原創
2024-06-02 16:57:41354瀏覽

函數參數傳遞有值傳遞和參考傳遞兩種方式。值傳遞複製參數值副本,對副本的修改不影響原值。引用傳遞傳遞對參數值的引用,對引用指向值的修改會影響原值。實戰案例:使用引用傳遞的 swapStringslice() 函數交換兩個字串切片的元素。

golang函數參數是如何傳遞的?

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn