Slice Iteration Techniques
Itération avec une boucle for standard
Itération traditionnelle basée sur l'index
fruits := []string{"apple", "banana", "orange"}
for i := 0; i < len(fruits); i++ {
fmt.Printf("Fruit %d: %s\n", i, fruits[i])
}
Itération basée sur range
Itération de base avec range
numbers := []int{10, 20, 30, 40, 50}
for index, value := range numbers {
fmt.Printf("Index: %d, Value: %d\n", index, value)
}
Ignorer l'index ou la valeur
// Ignore index
for _, value := range numbers {
fmt.Println(value)
}
// Ignore value
for index := range numbers {
fmt.Println(index)
}
Techniques d'itération avancées
Itération concurrente d'un slice
func processSlice(slice []int, ch chan int) {
for _, value := range slice {
ch <- value * 2
}
close(ch)
}
func main() {
numbers := []int{1, 2, 3, 4, 5}
ch := make(chan int, len(numbers))
go processSlice(numbers, ch)
for value := range ch {
fmt.Println(value)
}
}
Stratégies d'itération
graph TD
A[Slice Iteration] --> B[Traditional For Loop]
A --> C[Range-Based Iteration]
A --> D[Concurrent Iteration]
Analyse comparative
| Méthode d'itération |
Performance |
Lisibilité |
Flexibilité |
| For traditionnelle |
Haute |
Basse |
Limitée |
| Basée sur range |
Modérée |
Haute |
Flexible |
| Concurrente |
Complexe |
Modérée |
Très flexible |
- Utilisez range pour la plupart des scénarios
- Évitez les allocations inutiles
- Privilégiez l'itération basée sur l'index pour les boucles simples
Itération économisant la mémoire
largeSlice := make([]int, 1000000)
for i := 0; i < len(largeSlice); i++ {
// Process without creating additional copies
value := largeSlice[i]
// Perform operations
}
Scénarios d'itération spéciaux
Itération sur un slice imbriqué
matrix := [][]int{
{1, 2, 3},
{4, 5, 6},
{7, 8, 9},
}
for i, row := range matrix {
for j, value := range row {
fmt.Printf("Element at [%d][%d]: %d\n", i, j, value)
}
}
Bonnes pratiques
- Choisissez la bonne méthode d'itération
- Soyez attentif aux performances
- Utilisez range pour la plupart des cas d'utilisation
- Exploitez l'itération concurrente lorsque cela est approprié
Explorez davantage de techniques d'itération de slices avec les tutoriels avancés de programmation Golang de LabEx.