題目 svcOptions.CreateValidate return bucket is null
但是 job.ErrorHandler return nil
請問 範例一與範例二 err各為什麼答案
範例一
if err = svcOptions.CreateValidate(); err != nil {
if err = job.ErrorHandler(err); err != nil {
return err
}
return err
}
範例二
if err = svcOptions.CreateValidate(); err != nil {
if err := job.ErrorHandler(err); err != nil {
return err
}
return err
}
題目解析 範例ㄧ 會回傳 nil
, 範例二則是回傳 bucket is null
, 由於
if variable := func(); variable == "err or string" {
}
這個variable會是 這個if的區域變數 當if結束後 variable就會被gc
掉
但如果是以下的範例
if variable = func(); variable == "err or string" {
}
而且variable 在外層也有宣告的話 則會視為使用外層的變數 概念有點像全域變數一樣, 不慎操作會變成變數污染的一種方式