Unterschied zwischen []String und ...String in Go
-
Definieren ein Slice mit
[]stringin Go -
Definieren eine variadische Funktion mit
...stringin Go -
Verwendung von sowohl
[]stringals auch[]stringin 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
- Wie löscht man ein Element aus einer Slice in Golang
- GoLang Sort Slice of Structs
- Golang-Kopie-Slice
- Erstellen ein leeres Slice in Go
- Überprüfen Sie, ob ein Slice ein Element in Golang enthält