如果我有這樣的東西
案例1:
if str, err := m.something(); err != nil { return err } fmt.println(str) //str is undefined variable
案例2:
str, err := m.something(); fmt.println(str) //str is ok
我的問題是為什麼變數 str
以這樣的格式使用時其範圍會改變
if str, err := m.something(); err != nil { return err //str scope ends }
因為if
# 語句(以及for
和switch
)是隱式區塊,根據語言規範,:=
用於宣告和賦值。如果您希望 str
在 if
之後可用,您可以先宣告變量,然後在 if 語句中為其賦值:
var s string var err error if str, err = m.something(); err != nil // ...
以上是為什麼 `if` 改變了這個變數的範圍的詳細內容。更多資訊請關注PHP中文網其他相關文章!