Unterschied zwischen []String und ...String in Go
-
Definieren ein Slice mit
[]string
in Go -
Definieren eine variadische Funktion mit
...string
in Go -
Verwendung von sowohl
[]string
als auch[]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
- 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