5、golang-流程控制語句
阿新 • • 發佈:2022-05-13
99乘法表:
func chengfabiao() {
var chengJi int
for i := 1; i < 10; i++ {
for j := 1; j <= i; j++ {
chengJi = i * j
fmt.Printf("%d * %d = %d ", i, j, chengJi)
}
fmt.Println()
}
}
Range
Go 語言中 range 關鍵字用於 for 迴圈中迭代陣列(array)、切片(slice)、通道(channel)或集合(map)的元素。在陣列和切片中它返回元素的索引和索引對應的值,在集合中返回 key-value 對。
- 陣列、切片、字串返回索引和值。
- map返回鍵和值。
- 通道(channel)只返回通道內的值。
for 迴圈的 range 格式可以對 slice、map、陣列、字串等進行迭代迴圈。格式如下:
for key, value := range oldMap {
newMap[key] = value
}
以上程式碼中的 key 和 value 是可以省略。
如果只想讀取 key,格式如下:
for key := range oldMap
或者這樣:
for key, _ := range oldMap
如果只想讀取 value,格式如下:
for _, value := range oldMap
goto(跳轉到指定標籤)
goto
語句通過標籤進行程式碼間的無條件跳轉。goto
語句可以在快速跳出迴圈、避免重複退出上有一定的幫助。Go語言中使用goto
語句能簡化一些程式碼的實現過程。 例如雙層巢狀的for迴圈要退出時:
func gotoDemo1() { var breakFlag bool for i := 0; i < 10; i++ { for j := 0; j < 10; j++ { if j == 2 { // 設定退出標籤 breakFlag = true break } fmt.Printf("%v-%v\n", i, j) } // 外層for迴圈判斷 if breakFlag { break } } } func gotoDemo2() { for i := 0; i < 10; i++ { for j := 0; j < 10; j++ { if j == 2 { // 設定退出標籤 goto breakTag } fmt.Printf("%v-%v\n", i, j) } } return // 標籤 breakTag: fmt.Println("結束for迴圈") }
break(跳出迴圈)
break
語句還可以在語句後面新增標籤,表示退出某個標籤對應的程式碼塊,標籤要求必須定義在對應的for
、switch
和 select
的程式碼塊上。 舉個例子:
func breakDemo1() {
BREAKDEMO1:
for i := 0; i < 10; i++ {
for j := 0; j < 10; j++ {
if j == 2 {
break BREAKDEMO1
}
fmt.Printf("%v-%v\n", i, j)
}
}
fmt.Println("...")
}
continue(繼續下次迴圈)
在 continue
語句後新增標籤時,表示開始標籤對應的迴圈。例如:
func continueDemo() {
forloop1:
for i := 0; i < 5; i++ {
// forloop2:
for j := 0; j < 5; j++ {
if i == 2 && j == 2 {
continue forloop1
}
fmt.Printf("%v-%v\n", i, j)
}
}
}
參考連結:
https://www.liwenzhou.com/posts/Go/04_basic/
https://blog.csdn.net/weixin_44178736/article/details/119308650
https://www.runoob.com/go/go-range.html