Unterschied zwischen []String und ...String in Go

Jay Singh 30 Januar 2023
  1. Definieren ein Slice mit []string in Go
  2. Definieren eine variadische Funktion mit ...string in Go
  3. Verwendung von sowohl []string als auch []string in Go
Unterschied zwischen []String und ...String in Go

Ein Array-Abschnitt wird als Slice bezeichnet. Slices bieten mehr Leistung, Flexibilität und Komfort als Arrays.

Slices sind indexierbar und haben eine Länge, ähnlich wie Arrays. Im Gegensatz zu Arrays können sie erweitert werden.

Ein Slice ist eine Datenstruktur, die einen zusammenhängenden Abschnitt eines Arrays definiert und getrennt von der Slice-Variablen gehalten wird.

Ein Array ist nicht dasselbe wie ein Slice. Ein Slice eines Arrays ist eine Teilmenge davon.

Dieser Artikel behandelt die Unterschiede zwischen []string und []string in Go.

Definieren ein Slice mit []string in Go

In diesem Beispiel haben wir die Befehle for und range verwendet, um eine Reihe von Wörtern zu durchlaufen.

package main

import "fmt"

func main() {
    words := []string{"Iron Man", "Thor", "Hulk", "Dr Strange", "Spiderman"}
    for idx, word := range words {
        fmt.Println(idx, word)
    }
}

Ausgabe:

0 Iron Man
1 Thor
2 Hulk
3 Dr Strange
4 Spiderman

Definieren eine variadische Funktion mit ...string in Go

Ein Auslassungszeichen (...) vor dem Parameter definiert eine variadische Funktion. Lassen Sie uns ein Programm erstellen, das auf Avengers-Namen reagiert, die einer Funktion zugeführt werden.

Wir haben eine sayHello-Methode entworfen, die einen Parameter akzeptiert, names. Da wir vor dem Datentyp ein Auslassungszeichen (...) hinzugefügt haben: ...string, ist das Argument eine Variable.

Go versteht, dass die Funktion null, einen oder viele Parameter annehmen kann.

Der names-Parameter wird als Slice an die sayHello-Methode gesendet. Da der Datentyp ein String ist, kann der Parameter names innerhalb des Methodenkörpers wie ein Stück Strings ([]string) behandelt werden.

Wir können den range-Operator verwenden, um eine Schleife zu erstellen, die über den String-Slice iteriert.

package main

import "fmt"

func main() {
    sayHello()
    sayHello("Iron Man")
    sayHello("Thor", "Hulk", "Dr Strange", "Spiderman")
}

func sayHello(names ...string) {
    for _, n := range names {
        fmt.Printf("Hello %s\n", n)
}

Ausgabe:

Hello Iron Man
Hello Thor
Hello Hulk
Hello Dr Strange
Hello Spiderman

Verwendung von sowohl []string als auch []string in Go

package main

import "fmt"

func f(args ...string) {
    fmt.Println(len(args))
    for i, s := range args {
        fmt.Println(i, s)
    }
}

func main() {
    args := []string{"Hello", "Jay"}
    f(args...)
}

Ausgabe:

2
0 Hello
1 Jay

Verwandter Artikel - Go Slice

Verwandter Artikel - Go Variadic