53 lines
2.3 KiB
Markdown
53 lines
2.3 KiB
Markdown
---
|
|
title: Loops
|
|
localeTitle: Loops
|
|
---
|
|
# Для цикла в Go
|
|
|
|
Go имеет только `for` цикла. Базовый `for` цикла имеет три компонента, разделенных `;` -
|
|
|
|
* инструкция **init** : выполняется перед первой итерацией
|
|
|
|
* выражение **условия** : оценивается перед каждой итерацией
|
|
|
|
* **сообщение post** : выполняется в конце каждой итерации
|
|
|
|
|
|
Оператор **init** часто является коротким объявлением переменной. Объявленные там переменные видны только в области оператора `for` . Цикл прекращает итерацию после того, как логическое условие оценивается как false.
|
|
|
|
Пример цикла `for` приведен ниже:
|
|
|
|
**for.go**
|
|
|
|
```go
|
|
package main
|
|
|
|
import "fmt"
|
|
|
|
func main() {
|
|
sum := 0
|
|
for i := 0; i <= 10; i++ {
|
|
sum += i
|
|
}
|
|
fmt.Println("The sum of first 10 natural numbers is", sum)
|
|
}
|
|
```
|
|
|
|
Выполнение вышеуказанной программы дает результат, похожий на следующий вывод - \`\` \`
|
|
$ go run for.go Сумма первых 10 натуральных чисел равна 55
|
|
```
|
|
You can use `continue` and `break` to adjust the loops flow
|
|
```
|
|
|
|
идти // этот код печатает любые нечетные числа до 5 для n: = 0; n <= 10; n ++ { если n% 2 == 0 { // если число равнозначно переходить к следующему n Продолжать } fmt.Println (п) // если число 5 выходит из цикла если n == 5 { перерыв } }
|
|
```
|
|
If you want to create an infinite loop just use `for { }`
|
|
```
|
|
|
|
идти за { // Whill loop, пока условие не прерывает цикл break // выйти из цикла }
|
|
```
|
|
## Replacement for while-loop
|
|
To simulate while-loop of other languages, you can simply exclude the **init** and **post** statement:
|
|
```
|
|
|
|
идти func main () { num: = 1 для num <= 1000 { num \* = 2 } fmt.Println («Наименьшая мощность 2 над 1000 равна», num) } \`\` \` |