# golang 區域變數常見的坑 題目 svcOptions.CreateValidate `return bucket is null` 但是 job.ErrorHandler `return nil` 請問 範例一與範例二 err各為什麼答案 範例一 ```go= if err = svcOptions.CreateValidate(); err != nil { if err = job.ErrorHandler(err); err != nil { return err } return err } ``` 範例二 ```go= if err = svcOptions.CreateValidate(); err != nil { if err := job.ErrorHandler(err); err != nil { return err } return err } ``` --- 題目解析 範例ㄧ 會回傳 `nil` , 範例二則是回傳 `bucket is null`, 由於 ```go= if variable := func(); variable == "err or string" { } ``` 這個variable會是 這個if的區域變數 當if結束後 variable就會被`gc`掉 --- 但如果是以下的範例 ```go= if variable = func(); variable == "err or string" { } ``` 而且variable 在外層也有宣告的話 則會視為使用外層的變數 概念有點像全域變數一樣, 不慎操作會變成變數污染的一種方式
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up