J'ai vu un couple de personnes se plaindre de la boucle for, le long des lignes de "pourquoi devrions-nous avoir à dire i = 0; i < len; i++
dans cette journée et l'âge?".
Je suis en désaccord, je l'aime pour la construire. Vous pouvez utiliser la version longue si vous le souhaitez, mais la idiomatiques Aller est
var a = []int{1,2,3};
for i, v := range a {
fmt.Println(i, v);
}
L' for .. range
construire des boucles sur tous les éléments et fournit deux valeurs de l'indice i
et la valeur v
.
range
travaille aussi sur des cartes et des canaux.
Encore, si vous n'aimez pas for
dans n'importe quelle forme, vous pouvez définir each
, map
etc. en quelques lignes:
type IntArr []int
// 'each' takes a function argument.
// The function must accept two ints, the index and value,
// and will be called on each element in turn.
func (a IntArr) each(fn func(index, value int)) {
for i, v := range a { fn(i, v); }
}
func main() {
var a = IntArr([]int{2,0,0,9}); // create int slice and cast to IntArr
var fnPrint = func (i, v int) {
fmt.Println(i, ":", v);
}; // create a function
a.each(fnPrint); // call on each element
}
imprime
0 : 2
1 : 0
2 : 0
3 : 9
Je commence à aimer Aller beaucoup :)