首頁 >後端開發 >Golang >為什麼 `if` 改變了這個變數的範圍

為什麼 `if` 改變了這個變數的範圍

WBOY
WBOY轉載
2024-02-05 23:57:11449瀏覽

为什么 `if` 改变了这个变量的范围

問題內容

如果我有這樣的東西

案例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# 語句(以及forswitch)是隱式區塊,根據語言規範,:= 用於宣告和賦值。如果您希望 strif 之後可用,您可以先宣告變量,然後在 if 語句中為其賦值:

var s string
var err error

if str, err = m.something(); err != nil
// ...

以上是為什麼 `if` 改變了這個變數的範圍的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除