for
There is only i++
in go. ++i
is invalid.
There is no while
in go. The for
loop has many variants.
./code/for/main.go
package main
import (
"fmt"
)
func test1() {
fmt.Println("---test1---")
a := []int{1, 2}
for i := 0; i < len(a); i++ {
fmt.Println(a[i])
}
// 1
// 2
// fmt.Println(i) // undefined: i
}
func test2() {
fmt.Println("---test2---")
a := []int{1, 2}
// i is the index
// v is the value
// similar to enumerate() in Python
for i, v := range a {
fmt.Println(i, v)
}
// 0 1
// 1 2
// fmt.Println(i) // undefined: i
// fmt.Println(v) // undefined: v
}
func test3() {
fmt.Println("---test3---")
a := []int{1, 2}
// i is the index
for i := range a {
fmt.Println(i, a[i])
}
// 0 1
// 1 2
}
func test4() {
fmt.Println("---test4---")
a := []int{1, 2}
// i is the index
for _, v := range a {
fmt.Println(v)
}
// 1
// 2
// fmt.Println(i) // undefined: i
}
func test5() {
fmt.Println("---test5---")
a := []int{1, 2}
i := 0
for i < len(a) {
fmt.Println(i, a[i])
i += 1
}
// 0 1
// 1 2
}
func test6() {
fmt.Println("---test6---")
a := []int{1, 2}
i := 0
for ; i < len(a); i += 1 {
fmt.Println(i, a[i])
}
// 0 1
// 1 2
fmt.Println(i) // 2
}
func test7() {
fmt.Println("---test7---")
a := []int{1, 2}
i := 0
// like a while loop
for {
if i >= len(a) {
break
}
fmt.Println(i, a[i])
i += 1
}
// 0 1
// 1 2
fmt.Println(i) // 2
}
func main() {
test1()
test2()
test3()
test4()
test5()
test6()
test7()
}