Heim  >  Artikel  >  Backend-Entwicklung  >  So übergeben Sie verschiedene Arten von Parametern in Golang

So übergeben Sie verschiedene Arten von Parametern in Golang

PHPz
PHPzOriginal
2024-04-23 08:36:02396Durchsuche

Die Parameterübergabemethoden von Funktionen in Go sind unterteilt in: 1) Übergabe nach Wert (Grundtypen und Strukturen), 2) Übergabe nach Referenz (Referenztypen und Zeiger), 3) Übergabe nach Referenz nach Wert (selten verwendet). Die Wahl der geeigneten Bereitstellungsmethode wirkt sich auf die Funktionsleistung und Semantik aus.

So übergeben Sie verschiedene Arten von Parametern in Golang

So übergeben Sie verschiedene Parametertypen in Go

In Go können die Parameter einer Funktion auf viele verschiedene Arten übergeben werden, was sich darauf auswirkt, wie die Funktion diese Parameter verwendet. Hier sind drei gängige Möglichkeiten, verschiedene Arten von Parametern in Go zu übergeben:

Wertübergabe

Wertübergabe ist die einfachste Art der Übergabe. Auf diese Weise erstellt die Funktion eine Kopie des Arguments, sodass Änderungen am Argument keinen Einfluss auf den ursprünglichen Wert haben. Primitive Typen (wie int, float64 und string) und Strukturen werden als Wert übergeben. Zum Beispiel:

func inc(n int) {
    // 创建参数 n 的副本
    n++
}

func main() {
    a := 5
    inc(a) // a 的值保持为 5,因为 n 是 a 的副本
    fmt.Println(a) // 输出:5
}

Übergabe per Referenz

Übergabe per Referenz Übergabe von Parametern per Zeiger. Eine Funktion kann einen Zeiger auf einen Parameter ändern und dadurch indirekt den ursprünglichen Wert ändern. Referenztypen (wie Slices, Maps und Funktionen) werden als Referenz übergeben. Zeiger (wie *int) werden ebenfalls als Referenz übergeben. Zum Beispiel:

func inc(n *int) {
    // n 是指向原始值 a 的指针
    *n++
}

func main() {
    a := 5
    inc(&a) // 修改 a 的值
    fmt.Println(a) // 输出:6
}

Referenz als Wert übergeben

Referenz als Wert übergeben ist eine ungewöhnliche Art, Dinge zu übergeben, aber manchmal ist sie nützlich. Auf diese Weise erstellt die Funktion eine Kopie des Zeigers auf den Parameterwert. Zum Beispiel:

func incValueRef(val *float64) {
    // val 是指向参数值 f 的指针的副本
    *val++
}

func main() {
    f := 5.0
    incValueRef(&f) // 修改 f 的值
    fmt.Println(f) // 输出:6.0
}

Die Auswahl der richtigen Übergabemethode ist wichtig, da sie sich auf die Leistung und Semantik der Funktion auswirkt. Die Übergabe per Wert ist schneller, aber die Übergabe per Referenz ermöglicht es der Funktion, den ursprünglichen Wert zu ändern. Pass-by-Reference stellt einen Kompromiss zwischen beiden dar.

Das obige ist der detaillierte Inhalt vonSo übergeben Sie verschiedene Arten von Parametern in Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn