首頁 > 後端開發 > Golang > 主體

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

WBOY
發布: 2024-02-05 23:57:11
轉載
437 人瀏覽過

为什么 `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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板