Wie werden Golang-Funktionsparameter übergeben?

WBOY
Freigeben: 2024-06-02 16:57:41
Original
333 Leute haben es durchsucht

Es gibt zwei Möglichkeiten, Funktionsparameter zu übergeben: Wertübergabe und Referenzübergabe. Die Wertübergabe kopiert eine Kopie des Parameterwerts, und Änderungen an der Kopie wirken sich nicht auf den Originalwert aus. Die Referenzübergabe übergibt einen Verweis auf den Parameterwert, und Änderungen an dem Wert, auf den der Verweis verweist, wirken sich auf den ursprünglichen Wert aus. Praxisbeispiel: Tauschen Sie die Elemente zweier String-Slices mit der als Referenz übergebenen Funktion swapStringslice() aus.

Wie werden Golang-Funktionsparameter übergeben?

Übergabe von Funktionsparametern in Go

In der Go-Sprache können Funktionsparameter als Wert oder als Referenz übergeben werden.

Wertübergabe

Wertübergabe bedeutet, eine Kopie des Parameterwerts an eine Funktion zu übergeben. Dies bedeutet, dass Änderungen an der Kopie des Parameters keinen Einfluss auf den Originalwert haben.

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
}
Nach dem Login kopieren

Übergabe per Referenz

Übergabe per Referenz bedeutet, dass eine Referenz auf einen Parameter an eine Funktion übergeben wird. Dies bedeutet, dass sich jede Änderung des Werts, auf den die Parameterreferenz zeigt, auf den ursprünglichen Wert auswirkt.

Um die Referenzübergabe in Go zu implementieren, müssen Sie Zeigertypen als Funktionsparameter verwenden.

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
}
Nach dem Login kopieren

Praktischer Fall

Das Folgende ist ein praktischer Fall mit Referenzübergabe:

Implementieren Sie eine swapStringslice()-Funktion, die die Elemente von zwei String-Slices austauscht.

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]
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie werden Golang-Funktionsparameter übergeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage