一、for循环
for 初始化语句;条件判断;变量修改
for i := 0; i < 100; i++{
fmt.Printf('i=%d\n',i)
}
// C 的 while 一样
for i > 0{
fmt.Println("i>0")
}
// 死循环
for true{
fmt.Println("i>0")
}
或
for{
fmt.Printf("i>0")
}
二、for range
// 用来遍历数组、slice、map、chan
package main
import (
"fmt"
)
func main() {
str := "hello world"
for i, v := range str{
fmt.Printf("index[%d] val[%c] len[%d]\n", i, v, len([]byte(str)))
}
}
package main
import (
"time"
"fmt"
)
func test() {
time.Sleep(time.Millisecond*100)
}
func main() {
str := "hello中国world"
for i, v := range str{
if i == 2{
continue
}else if i >5{
break
}
fmt.Printf("index[%d] val[%c] len[%d]\n", i, v, len([]byte(string(v))))
}
}
结果:中文3字节
index[0] val[h] len[1]
index[1] val[e] len[1]
index[3] val[l] len[1]
index[4] val[o] len[1]
index[5] val[中] len[3]
三、goto和label
func main(){
// label作为一个标记
LABEL_1:
for i := 0; i<=2; i++{
for j := 0; j <=2; j++{
if j == 1{
// 当j为1时,跳转至外层循环
continue LABEL_1
}
fmt.Printf("i is:%d, and j is: %d\n", i, j)
}
}
}
结果:
i is:0, and j is: 0
i is:1, and j is: 0
i is:2, and j is: 0
// 只能在同一函数中使用goto
func main(){
i := 0
HEAD:
print(i)
i++
if i == 5{
return
}
goto HEAD
}