Go語言的LABLE標籤與goto語句

2021-10-06 18:46:00 字數 1276 閱讀 6342

for、switch 或 select 語句都可以配合標籤(label)形式的識別符號使用,即某一行第乙個以冒號(:)結尾的單詞(gofmt 會將後續**自動移至下一行)。

示例 5.13 for6.go:

(標籤的名稱是大小寫敏感的,為了提公升可讀性,一般建議使用全部大寫字母)

package main

import "fmt"

func main()

fmt.printf("i is: %d, and j is: %d\n", i, j)

} }}

本例中,continue 語句指向 label1,當執行到該語句的時候,就會跳轉到 label1 標籤的位置。

您可以看到當 j==4 和 j==5 的時候,沒有任何輸出:標籤的作用物件為外部迴圈,因此 i 會直接變成下乙個迴圈的值,而此時 j 的值就被重設為 0,即它的初始值。如果將 continue 改為 break,則不會只退出內層迴圈,而是直接退出外層迴圈了。另外,還可以使用 goto 語句和標籤配合使用來模擬迴圈。

示例 5.14 goto.go:

package main

func main()

goto here

}

上面的**會輸出01234

使用逆向的 goto 會很快導致義大利麵條式的**,所以不應當使用而選擇更好的替代方案。

特別注意使用標籤和 goto 語句是不被鼓勵的:它們會很快導致非常糟糕的程式設計,而且總有更加可讀的替代方案來實現相同的需求。

乙個建議使用 goto 語句的示例會在第 15.1 章的 ******_tcp_server.go **現:示例中在發生讀取錯誤時,使用 goto 來跳出無限讀取迴圈並關閉相應的客戶端鏈結。

定義但未使用標籤會導致編譯錯誤:label … defined and not used

如果您必須使用 goto,應當只使用正序的標籤(標籤位於 goto 語句之後),但注意標籤和 goto 語句之間不能出現定義新變數的語句,否則會導致編譯失敗。

示例 5.15 goto2.go:

// compile error goto2.go:8: goto target jumps over declaration of b at goto2.go:8

package main

import "fmt"

func main()

go語言cgo C與Go互調

見 foo.h void foo void callgo void hello void print x char str foo.c gcc c foo.c ar rv libfoo.a foo.o include foo.h include stdio.h include obj cgo exp...

Go 初學Go語言

馬上要去實習了,要開始實戰了 今天在這總結一些基礎用法,方便後面自己查閱 總結的參考資料為go by example,一邊複習一邊記錄 go by example var a string initial var b,c int 1 2 一次宣告多個 var d true 自動推斷型別 var e ...

lable標籤的使用

js取值 一般js獲取控制項值的方法都是document.getelementbyid id value,但是lable的話有些不一樣。到了客戶端就會成為 而只能用innertext和innerhtml來指定其顯示內容。所以取值的方法就 var id document.getelementbyid ...