Какие циклы есть в 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