English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Цикл for языка Go является повторяющимся управляющим оператором, который позволяет нам выполнять цикл определенное количество раз. В языке Go цикл for может использоваться в различных формах, включая:
1.Простой цикл forМы используем аналогичные в других языках программирования (например, C, C++, Java, C# и т.д.).
Синтаксис:
for initialization; condition; post{ // Строка.... }
здесь,
ВИнициализация(initialization)Условие является опциональным и выполняется до начала цикла. Инициализирующее действие всегда находится в простом выражении, например, объявление переменной, операция инкремента или присваивания или вызов функции.
Условие (condition) содержит булевое выражение, которое вычисляется в начале каждого итерации цикла. Если значение условия истина, то выполняется цикл.
последовательное действие выполняется после тела цикла for. После выполнения последнего действия, условия снова вычисляются, и цикл заканчивается.
//Использование цикла for package main import "fmt" //Основная функция func main() { //Цикл for //Этот цикл начинается с i = 0 и продолжается до тех пор, пока условие i<4 истина //последовательное действие i++ for i := 0; i < 4; i++{ fmt.Printf("w3codebox\n") } }
Вывод:
w3codebox w3codebox w3codebox w3codebox
2. Использование цикла for как бесконечного цикла:Цикл for также может использоваться как бесконечный цикл. Если пользователь не пишет условия в цикле for, то это означает, что условие истина, и цикл переходит в бесконечный цикл.
Синтаксис:
for{ //Строка... }
//использование бесконечного цикла package main import "fmt" func main() { //бесконечный цикл for { fmt.Printf("w3codebox\n") } }
Вывод:
w3codebox w3codebox w3codebox w3codebox w3codebox w3codebox w3codebox w3codebox w3codebox w3codebox ...........
3. Использование цикла for как цикла while: Цикл for также может использоваться как цикл while. Выполнение этого цикла продолжается до тех пор, пока данное условие истина. Когда значение условия false, цикл заканчивается.
Синтаксис:
for condition{ //Строка.. }
//Цикл for и while одинаковы package main import "fmt" func main() { //Цикл while //Цикл for выполняется до //condition i <3 истинна i:= 0 for i < 3 { i += 2 } fmt.Println(i) }
Вывод:
4
4. Простой диапазон в цикле for:Вы также можетев цикле forИспользование диапазона.
Синтаксис:
for i, j:= range rvariable{ // утверждение.. }
здесь,
i и j — это переменные, присваивающие значения итерации. Их также называют переменными итерации.
Второй переменной, то есть j, является опциональной.
Ранговое выражение оценивается один раз до начала цикла.
package main import "fmt" func main() { //здесь rvariable является массивом rvariable:= []string{"GFG", "Geeks", "w3codebox"} //i и j хранят значения rvariable //i хранит индекс строки //j хранит отдельную строку заданного массива for i, j:= range rvariable { fmt.Println(i, j) } }
Вывод:
0 GFG 1 Geeks 2 w3codebox
5. Использование цикла for для строки: }} Цикл for может итерироваться по Unicode кодовым点是 строки.
Синтаксис:
for index, chr:= range str{ // утверждение.. }
здесь, индексом является переменной, хранящей первый байт кода UTF-8, аchr являетсяявляется переменной, хранящей символы заданной строки, аstrявляется строкой.
package main import "fmt" func main() { // строка в качестве диапазона для цикла for for i, j := range "XabCd" { fmt.Printf("%U имеет значение индекса %d\n", j, i) } }
Вывод:
U+0058 имеет значение индекса 0 U+0061 имеет значение индекса 1 U+0062 имеет значение индекса 2 U+0043 имеет значение индекса 3 U+0064 имеет значение индекса 4
6. Использование цикла for для map: Цикл for может итерироватьсяmapпара ключей и значений.
Синтаксис:
for key, value := range map { // утверждение.. }
package main import "fmt" func main() { mmap := map[int]string{ 22: "Geeks", 33: "GFG", 44: "w3codebox", } for key, value := range mmap { fmt.Println(key, value) } }
Вывод:
22 Geeks 33 GFG 44 w3codebox
7. Для канала: For通道: Цикл for может итерироваться по отправленным значениям канала до его закрытия.
Синтаксис:
for item := range Chnl { // утверждение.. }
package main import "fmt" func main() { // использование канала chnl := make(chan int) go func() { chnl <- 100 chnl <- 1000 chnl <- 10000 chnl <- 100000 close(chnl) }() for i := range chnl { fmt.Println(i) } }
Вывод:
100 1000 10000 100000
Важно:
В трёх выражениях цикла for не используются скобки.
Внутренние скобки в цикле for обязательны.
Левая скобка должна быть на той же строке, что и операция post.
Если массив, строка, срез или набор map пуст, то цикл for не выбрасывает ошибку и продолжает свой процесс. Иными словами, если массив, строка, срез или map nil, то количество итераций цикла for равно нулю.