Différence entre []String et ...String dans Go
-
Définir une tranche à l’aide de
[]string
dans Go -
Définir une fonction variadique en utilisant
...string
dans Go -
Utilisez à la fois
[]string
et...string
dans Go
Une section de tableau est appelée tranche. Les tranches offrent plus de puissance, de flexibilité et de commodité que les baies.
Les tranches sont indexables et ont une longueur, un peu comme les tableaux. Contrairement aux tableaux, ils peuvent être étendus.
Une tranche est une structure de données qui définit une section contiguë d’un tableau et est conservée séparément de la variable de tranche.
Un tableau n’est pas la même chose qu’une tranche. Une tranche d’un tableau en est un sous-ensemble.
Cet article traitera des différences entre []string
et ...string
dans Go.
Définir une tranche à l’aide de []string
dans Go
Dans cet exemple, nous avons utilisé les commandes for
et range
pour parcourir un ensemble de mots.
package main
import "fmt"
func main() {
words := []string{"Iron Man", "Thor", "Hulk", "Dr Strange", "Spiderman"}
for idx, word := range words {
fmt.Println(idx, word)
}
}
Production:
0 Iron Man
1 Thor
2 Hulk
3 Dr Strange
4 Spiderman
Définir une fonction variadique en utilisant ...string
dans Go
Une ellipse (...
) devant le paramètre définit une fonction variadique. Créons un programme qui répond aux noms Avengers
fournis à une fonction.
Nous avons conçu une méthode sayHello
qui accepte un paramètre, names
. Comme nous avons ajouté des points de suspension (...
) avant le type de données : ...string
, l’argument est une variable.
Go comprend que la fonction peut prendre zéro, un ou plusieurs paramètres.
Le paramètre names
est envoyé à la méthode sayHello
sous forme de tranche. Comme le type de données est une chaîne, le paramètre names
peut être géré à l’intérieur du corps de la méthode comme une tranche de chaînes ([]string
).
Nous pouvons utiliser l’opérateur range
pour construire une boucle qui itère sur la tranche de chaînes.
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)
}
Production:
Hello Iron Man
Hello Thor
Hello Hulk
Hello Dr Strange
Hello Spiderman
Utilisez à la fois []string
et ...string
dans 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...)
}
Production:
2
0 Hello
1 Jay
Article connexe - Go Slice
- Comment supprimer un élément d'une tranche dans le Golang
- Créer une tranche vide dans Go
- Vérifier si une tranche contient un élément dans Golang
- Concaténer deux tranches en Go