Heim >Backend-Entwicklung >Golang >Parameterübergabe in der Golang-Funktion

Parameterübergabe in der Golang-Funktion

WBOY
WBOYOriginal
2024-04-28 18:39:02647Durchsuche

Die Parameterübergabe der GoLang-Funktion übernimmt den Wertübergabemechanismus. Die Änderung von Werttypparametern wirkt sich nicht auf die tatsächlichen Parameter aus, während die Änderung von Referenztypparametern den indirekten Zugriff und die Änderung der tatsächlichen Parameter ermöglicht Parameter.

Parameterübergabe in der Golang-Funktion

Parameterübergabe in GoLang-Funktionen

Einführung

In GoLang folgt die Parameterübergabe dem Pass-by-Value-Mechanismus. Dies bedeutet, dass Änderungen an den Parametern innerhalb der Funktion keine Auswirkungen auf die tatsächlichen Parameter außerhalb der Funktion haben.

Parametertyp

GoLang-Funktionsparameter können Werttypen oder Referenztypen sein.

  • Werttyp: Ganzzahl, Gleitkomma, Boolescher Wert, Zeichenfolge und andere Grundtypen.
  • Referenztypen: Typen wie Arrays, Slices, Strukturen, Zeiger usw., die auf tatsächliche Daten verweisen.

Werttyp

Bei Werttypparametern haben Änderungen an den Parametern innerhalb der Funktion keine Auswirkungen auf die tatsächlichen Parameter. Dies liegt daran, dass bei einem Funktionsaufruf eine Kopie der Parameter erstellt wird.

func swap(a, b int) {
    a, b = b, a // 在函数内交换 a 和 b 的副本
}

func main() {
    x := 5
    y := 7
    swap(x, y)
    fmt.Println(x, y) // 输出 5 7
}

Referenztyp

Bei Referenztypparametern wirken sich Änderungen an den Parametern innerhalb der Funktion auf die tatsächlichen Parameter aus. Dies liegt daran, dass die Funktion direkt mit den tatsächlichen Daten arbeitet.

func swap(a, b []int) {
    a[0], b[0] = b[0], a[0] // 交换切片的第一个元素
}

func main() {
    x := []int{5}
    y := []int{7}
    swap(x, y)
    fmt.Println(x, y) // 输出 [7] [5]
}

Pointers

Pointer-Typen bieten einen Mechanismus für den indirekten Zugriff auf Werte. Beim Übergeben eines Referenztyps über einen Zeiger können die tatsächlichen Parameter geändert werden.

func swap(a, b *int) {
    *a, *b = *b, *a // 交换指针指向的值
}

func main() {
    x := 5
    y := 7
    swap(&x, &y)
    fmt.Println(x, y) // 输出 7 5
}

Praktischer Fall

Das Folgende ist ein praktischer Fall mit Funktionsparameterübergabe:

type Book struct {

Das obige ist der detaillierte Inhalt vonParameterübergabe in der Golang-Funktion. 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