後,當我初始化錯誤全局變量來似乎是無以同樣包裝的另一個功能。
我不明白這是爲什麼不代碼panicing?Golang全局錯誤變量保持零初始化
package main
import (
"os"
"fmt"
)
var loadErr error
func main() {
f, loadErr := os.Open("asdasd")
if loadErr != nil {
checkErr()
}
if f != nil {
fmt.Println(f.Name())
}
}
// panic won't be called because loadErr is nil
func checkErr() {
if loadErr != nil {
panic(loadErr)
}
}
但是當我這樣做,似乎按預期方式工作?
package main
import (
"os"
)
var loadErr error
func main() {
_, err := os.Open("asdasd")
loadErr = err
if loadErr != nil {
checkErr()
}
}
// panic will be called as expected
func checkErr() {
if loadErr != nil {
panic(loadErr)
}
}
我編輯我的問題更清晰。我最終必須使用:=,因爲在現實生活中的情況下,我需要持有˚F以及 –
@ J.Gorey所以你有什麼問題嗎?你正在創建一個局部變量來影響全局變量。 – zerkms