Comment déterminer la position d'un élément présent en tranche?
J'ai besoin de quelque chose comme ce qui suit:
type intSlice []int
func (slice intSlice) pos(value int) int {
for p, v := range slice {
if (v == value) {
return p
}
}
return -1
}
Réponses:
Désolé, il n'y a pas de fonction de bibliothèque générique pour faire cela. Go n'a pas un moyen simple d'écrire une fonction qui peut fonctionner sur n'importe quelle tranche.
Votre fonction fonctionne, même si ce serait un peu mieux si vous l'écriviez en utilisant
range
.Si vous avez une tranche d'octets, il y a bytes.IndexByte .
la source
if element in collection: do_something()
Vous pouvez créer une fonction générique de manière idiomatique:
Et l'utilisation:
la source
-1
pour une erreur soit idiomatique, il devrait plutôt utiliser un retour multiple. (Je suis nouveau au golang mais c'est ce que j'ai lu)Vous pouvez écrire une fonction;
Cela renvoie l'index d'un caractère / chaîne s'il correspond à l'élément. S'il n'est pas trouvé, renvoie un -1.
la source
Il n'y a pas de fonction de bibliothèque pour cela. Vous devez coder vous-même.
la source
la source
Une autre option consiste à trier la tranche à l'aide du package de tri, puis à rechercher l'élément que vous recherchez:
impressions
Cela fonctionne pour les types de base et vous pouvez toujours implémenter l'interface de tri pour votre propre type si vous avez besoin de travailler sur une tranche d'autres choses. Voir http://golang.org/pkg/sort
Cela dépend de ce que vous faites.
la source
for p, v := range ...
etif
. Je voulais juste souligner l'option.