2 回答

TA貢獻1790條經驗 獲得超9個贊
為了防止函數在不返回其返回值的情況下運行結束,Go 有一個終止語句的概念。終止語句是某些類型的語句,可以很容易地表明執行不會繼續超過該語句。帶有結果參數的函數必須以終止語句結束。
沒有和for
沒有break
循環條件算作終止語句,但有for
循環條件不算,即使該循環條件始終為真。(規則可以擴展為將for
withtrue
作為終止語句的條件,但是添加太多情況會使定義更加混亂而不是有用。)您的第二個getIntJ
定義沒有終止語句。

TA貢獻1719條經驗 獲得超6個贊
按照說明插入退貨。
package main
import (
"fmt"
)
func main() {
fmt.Println(getIntJ1())
fmt.Println(getIntJ2())
}
func getIntJ1() (j int32) {
for {
j = 20
if j == 21 {
continue
}
return
}
}
func getIntJ2() (j int32) {
for true {
j = 20
if j == 21 {
continue
}
return
}
return
}
游樂場:https://play.golang.org/p/QbYQ6NkOMpQ
輸出:
20
20
對于getIntJ1, for {},return永遠不需要。對于getIntJ2, for condition {},return可能需要。condition編譯器在什么時候可以更聰明true
for {}寫比寫更慣用for true {}。
- 2 回答
- 0 關注
- 155 瀏覽
添加回答
舉報