亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 golang switch 語句中更改變量值

在 golang switch 語句中更改變量值

Go
烙印99 2022-10-10 19:58:16
package mainimport "fmt"func main() {    var i int = 10    switch true {    case i < 20:        fmt.Printf("%v is less than 20\n", i)        i = 100        fallthrough    case i < 19:        fmt.Printf("%v is less than 19\n", i)        fallthrough    case i < 18:        fmt.Printf("%v is less than 18\n", i)        fallthrough    case i > 50:        fmt.Printf("%v is greater than 50\n", i)        fallthrough    case i < 19:        fmt.Printf("%v is less than 19\n", i)        fallthrough    case i == 100:        fmt.Printf("%v is equal to 100\n", i)        fallthrough    case i < 17:        fmt.Printf("%v is less than 17\n", i)    }}輸出:10 is less than 20100 is less than 19100 is less than 18100 is greater than 50100 is less than 19100 is equal to 100100 is less than 17這是預期的行為嗎?
查看完整描述

2 回答

?
臨摹微笑

TA貢獻1982條經驗 獲得超2個贊

fallthrough語句將控制權轉移到下一個case塊的第一條語句。

fallthrough語句并不意味著繼續計算 next 的表達式case,而是無條件地開始執行下一個case塊。

引用fallthrough聲明文檔:

“fallthrough”語句將控制轉移到表達式“switch”語句中下一個 case 子句的第一個語句。

引用switch聲明文檔

在 case 或 default 子句中,最后一個非空語句可能是(可能標記為“fallthrough”語句,以指示控制應該從該子句的末尾流向下一個子句的第一個語句。否則控制流到“switch”語句的末尾。


查看完整回答
反對 回復 2022-10-10
?
慕森王

TA貢獻1777條經驗 獲得超3個贊

是的,正如 icza 所指出的那樣。

如果您不想在第一個 case 塊之后落入每個 case 塊,請刪除fallthrough行(就像您不會break在每個 C/C++ case 塊的末尾放置一行。

而且,正如您在評論中所期望的那樣,評估在switch()達到時完成,之后無論您是否更改i值,都不會在每個案例塊上再次評估。


查看完整回答
反對 回復 2022-10-10
  • 2 回答
  • 0 關注
  • 167 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號