ベーコンの裏

囲碁・ボドゲ・温泉を愛するフクロウのブログ

【Golang】varではまった

https://play.golang.org/p/Ovk4maRlO4

今さらだけど知らなかった、これ。

var s *Sample

で宣言するとsの実体はnilだけど

var s Sample

で宣言すると初期化されたStructがつくられている、つまり

s := Sample{}

と同じ。

いや、自分なら

var s Sample

なんて書き方しないけど、参考にしてたコードが

var s Sample
hoge(&s)

って書いてて、はじめからポインタで宣言しろよと思って、

var s *Sample
hoge(s)

に書き直したら、nilを渡した先で死んでたみたいな話。
へー、わかりにくいからnewか{}リテラルで書くけど、まあ頭の片隅においておこう。