Go Цикли For
Цикл for
перебирає блок коду вказану кількість разів.
Цикл for
є єдиним доступним у мові Go.
Перейти до циклу
Цикли зручні, якщо ви хочете запускати той самий код знову і знову, кожного разу з іншим значенням.
Кожне виконання циклу називається ітерацією.
Цикл for
може містити до трьох інструкцій (операторів):
Синтаксис
for інструкція1; інструкція2; інструкція3 {
// код, який буде виконуватися для кожної ітерації
}
інструкція1 - ініціалізує значення лічильника циклу.
інструкція2 - оцінюється для кожної ітерації циклу. Якщо воно оцінюється як TRUE, цикл продовжується. Якщо воно має значення FALSE, цикл завершується.
інструкція3 - збільшує значення лічильника циклу.
Примітка: Ці інструкції не обов’язково присутні як аргументи циклів. Однак вони повинні бути присутніми в коді в певній формі.
Приклади циклу for
Приклад 1
У цьому прикладі будуть надруковані числа від 0 до 4:
package main
import ("fmt")
func main() {
for i:=0; i < 5; i++ {
fmt.Println(i)
}
}
Результат:
0
1
2
3
4
Пояснення прикладу 1
- i:=0; - Ініціалізуйте лічильник циклу (i) та встановіть початкове значення на 0
- i < 5; - Продовжуйте цикл до тих пір, поки i менше 5
- i++ - Збільшуйте значення лічильника циклу на 1 для кожної ітерації
Приклад 2
Цей приклад рахує до 100 десятками:
package main
import ("fmt")
func main() {
for i:=0; i <= 100; i+=10 {
fmt.Println(i)
}
}
Результат:
0
10
20
30
40
50
60
70
80
90
100
Пояснення прикладу 2
- i:=0; - Ініціалізуйте лічильник циклу (i) та встановіть початкове значення на 0
- i <= 100; - Продовжуйте цикл до тих пір, поки i менше або дорівнює 100
- i+=10 - Збільшуйте значення лічильника циклу на 10 для кожної ітерації
Інструкція continue
Інструкція continue
використовується для пропуску однієї чи кількох ітерацій у циклі. Потім він продовжується з наступною ітерацією в циклі.
Приклад
У цьому прикладі пропускається значення 3:
package main
import ("fmt")
func main() {
for i:=0; i < 5; i++ {
if i == 3 {
continue
}
fmt.Println(i)
}
}
Результат:
0
1
2
4
Інструкція break
Інструкція break
використовується для переривання/припинення виконання циклу.
Приклад
В цьому прикладі цикл переривається, коли i дорівнює 3:
package main
import ("fmt")
func main() {
for i:=0; i < 5; i++ {
if i == 3 {
break
}
fmt.Println(i)
}
}
Результат:
0
1
2
Примітка: continue
та break
зазвичай використовуються з умовами.
Вкладені цикли
Можна розмістити цикл всередині іншого циклу.
Тут "внутрішній цикл" виконуватиметься один раз для кожної ітерації "зовнішнього циклу":
Приклад
package main
import ("fmt")
func main() {
adj := [2]string{"big", "tasty"}
fruits := [3]string{"apple", "orange", "banana"}
for i:=0; i < len(adj); i++ {
for j:=0; j < len(fruits); j++ {
fmt.Println(adj[i],fruits[j])
}
}
}
Результат:
big apple
big orange
big banana
tasty apple
tasty orange
tasty banana
Ключове слово Range (діапазон)
Ключове слово range
використовується, щоб легше перебирати масив, фрагмент або карту. Він повертає як індекс, так і значення.
Ключове слово range
використовується таким чином:
Синтаксис
for index, value := array|slice|map {
// код, який буде виконуватися для кожної ітерації
}
Приклад
У цьому прикладі використовується range
для повторення масиву та друку індексів і значень у кожному (idx
зберігає індекс, val
зберігає значення):
package main
import ("fmt")
func main() {
fruits := [3]string{"apple", "orange", "banana"}
for idx, val := range fruits {
fmt.Printf("%v\t%v\n", idx, val)
}
}
Результат:
0 apple
1 orange
2 banana
Порада: Щоб відобразити лише значення або індекс, ви можете опустити інше виведення за допомогою підкреслення (_
).
Приклад
Тут ми хочемо опустити індекси (idx
зберігає індекс, val
зберігає значення):
package main
import ("fmt")
func main() {
fruits := [3]string{"apple", "orange", "banana"}
for _, val := range fruits {
fmt.Printf("%v\n", val)
}
}
Результат:
apple
orange
banana
Приклад
Тут ми хочемо опустити значення (idx
зберігає індекс, val
зберігає значення):
package main
import ("fmt")
func main() {
fruits := [3]string{"apple", "orange", "banana"}
for idx, _ := range fruits {
fmt.Printf("%v\n", idx)
}
}
Результат:
0
1
2