Какие циклы есть в Go

Существует один основной цикл — это цикл `for`. н может использоваться в различных формах, выполняя функции традиционных циклов `while`, `do-while` и классического `for`.
Формы цикла1. С тремя выражениями:

   ```go
   package main

   import "fmt"

   func main() {
       for i := 0; i < 5; i++ {
           fmt.Println(i)
       }
   }
   ```

В этом примере классический цикл `for` состоит из трех частей: инициализация (`i := 0`), условие (`i < 5`) и инкремент (`i++`). Этот формат аналогичен циклу `for` в других языках программирования, таких как C или Java.2. Как `while`:

   ```go
   package main

   import "fmt"

   func main() {
       i := 0
       for i < 5 {
           fmt.Println(i)
           i++
       }
   }
   ```

В данном случае цикл `for` используется как `while`. Условие (`i < 5`) проверяется перед каждой итерацией, и цикл продолжается, пока условие истинно.3. Бесконечный:

   ```go
   package main

   import "fmt"

   func main() {
       i := 0
       for {
           if i >= 5 {
               break
           }
           fmt.Println(i)
           i++
       }
   }
   ```

Бесконечный цикл создается с использованием `for` без условий. Для выхода из такого цикла необходимо использовать операторы `break` или `return`.4. С использованием `range`:

   ```go
   package main

   import "fmt"

   func main() {
       arr := []int{1, 2, 3, 4, 5}
       for index, value := range arr {
           fmt.Printf("Index: %d, Value: %d\n", index, value)
       }
   }
   ```

Цикл `for` с использованием `range` позволяет итерироваться по элементам массивов, срезов, карт, строк и каналов. В данном примере `index` представляет индекс текущего элемента, а `value` — его значение.

Примеры:

1. Итерация по массиву:

   ```go
   arr := [5]int{10, 20, 30, 40, 50}
   for i := 0; i < len(arr); i++ {
       fmt.Println(arr[i])
   }
   ```

2. Итерация по карте:

   ```go
   m := map[string]int{"a": 1, "b": 2, "c": 3}
   for key, value := range m {
       fmt.Printf("Key: %s, Value: %d\n", key, value)
   }
   ```

3. Итерация по строке:

   ```go
   s := "hello"
   for index, char := range s {
       fmt.Printf("Index: %d, Char: %c\n", index, char)
   }
   ```

Есть только один основной цикл — `for`, который можно использовать как классический `for`, `while`, бесконечный цикл или цикл по коллекциям с `range`. Этот подход обеспечивает гибкость и простоту написания циклов в различных ситуациях.

June 2, 2024, easyoffer

Примеры ответов: