English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основной курс Golang

Управляющие операторы в Golang

Функции и методы в Golang

Структуры в Golang

Срезы и массивы в Golang

Строки(String) в Golang

Пункторы в Golang

Интерфейсы в Golang

Конкурентоспособность в Golang

Исключения(Error) в Golang

Другие компоненты Golang

Цикл for языка Go

Цикл 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 равно нулю.