var hoge *Hoge
— chidakiyo (@chidakiyo) February 26, 2020
if condition != nil {
hoge, err := https://t.co/3dOQ15DCmc(ctx, hoge_key)
if err != nil {
return nil, err
}
fmt.Printf("%v", *hoge)
} else {
hoge = nil
}
こんな感じのコードで死んでたんですが、うっかりhogeがnil担っちゃうの防ぐにはどうしたら・・・(文字数
こういった場合に便利なのがオフィシャルが提供している解析コマンド shadow です。(相変わらずググらび...)
インストールは以下を実行します。
$ go get golang.org/x/tools/go/analysis/passes/shadow/cmd/shadow
ツイートされておられる以下のコードで実行してみます。
package main
import (
"fmt"
)
var condition = true
func main() {
var hoge *string
if condition {
hoge, err := do("word")
if err != nil {
return
}
fmt.Printf("checkpoint: %v\n", *hoge)
} else {
hoge = nil
}
fmt.Printf("RESUT: %v\n", hoge)
}
func do(v string) (*string, error) {
return &v, nil
}
.../main.go:13:3: declaration of "hoge" shadows declaration at line 11
便利。