Hike News
Hike News

Go初識-day7-流程控制_2

for 循環

example 1

1
2
3
for 初始化語句;條件判斷;變量修改{

}
  • 注意for後面的語句絕對不要用()框起來

example 2

for可以省略前後的初始化語句及變量修改語句,只留下條件語句
可以直接當成while語句使用

1
2
3
for 條件 {

}

example 3

死循環或稱無限循環

1
2
3
for true {

}

可直接簡寫成

1
2
3
for {

}

example 4

用來遍歷數組,slice,map,chan等類型
可使用for range 語句

1
2
3
4
str := "Hello World"
for i,v := range str { //[1]
fmt.Printf("index[%d],value:%c\n",i,v)
}

  • 字符串其實就是一個字符組成的陣列

[1] i為元素於陣列裡的下標,v為值,i,v皆為初次定義,都必須聲明(:=)才能使用

result

1
2
3
4
5
6
7
8
9
10
11
index[0],value:H
index[1],value:e
index[2],value:l
index[3],value:l
index[4],value:o
index[5],value:
index[6],value:W
index[7],value:o
index[8],value:r
index[9],value:l
index[10],value:d

continue & break

與其他語言的用法一樣

  • continue表示跳過後面執行語句並重新開始執行
  • break跳出循環

goto & LABEL

  • 容易打亂語句的執行
  • 代碼可讀性變差,基本上不建議使用

LABEL

LABEL的語法就是一串自訂義的字符串加一個:作為標記

1
2
3
4
5
6
7
8
9
10
11
12
13
package main

import "fmt"

func main(){
LABEL1:
for i:=0;i<=5;i++ {
if i == 4 {
continue LABEL1
}
fmt.Println(i)
}
}

goto

goto到任何LABEL只能在同一個函數裡面不能跳脫到函數外部或其他函數的標籤
以下就是使用goto來實現for循環

1
2
3
4
5
6
7
8
9
10
11
12
package main

func main(){
i:=0
HERE:
print(i)
i++
if i == 5 {
return
}
goto HERE
}