НАЙКРАЩИЙ САЙТ ДЛЯ ВЕБ-РОЗРОБНИКІВ
Golang. Уроки для початківців

En

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
Спробуйте самі »

Go Вправи

Перевірте себе за допомогою вправ

Вправа:

Виведіть i, якщо i менше 6.

package main
import ("fmt") 
func main() { i:=0; i < 6; { fmt.Println(i) } }