首頁 > 後端開發 > Golang > 為什麼我的全域錯誤變數在 Go 中初始化後不會崩潰?

為什麼我的全域錯誤變數在 Go 中初始化後不會崩潰?

Susan Sarandon
發布: 2024-12-11 13:51:12
原創
172 人瀏覽過

Why Doesn't My Global Error Variable Panic After Initialization in Go?

為什麼全域錯誤變數在初始化後不會崩潰?

初始化全域錯誤變數時,對於同一套件中的函數來說,它可能看起來沒有變化。這種差異源自於對變數作用域的誤解。

作用域和初始化

在第一個範例中,您使用:= 在主函數中初始化f 和loadErr:

這一行為f 和loadErr 建立一個新的局部變數。它不會修改函數外部定義的全域變數。因此,當您呼叫 checkErr() 時,loadErr 仍然是 nil,因為它尚未設定在主函數範圍內的任何位置。

設定全域變數

在第二個範例中,您使用= 將loadErr 的值設為os.Open() 傳回的錯誤:

透過使用=,您正在明確分配局部err 變數的值到全域loadErr 變數。這允許函數 checkErr() 存取修改後的全域變數並觸發恐慌。

避免遮蔽

為了防止無意中建立遮蔽全域變數的局部變量,聲明全域變數非常重要在賦值之前明確指定。在第一個範例中,您可以透過移動其定義將 loadErr 宣告為主函數外部的全域變數:

這確保了全域 loadErr 變數在整個程式中可存取和更新。

以上是為什麼我的全域錯誤變數在 Go 中初始化後不會崩潰?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板