読者です 読者をやめる 読者になる 読者になる

ゆくゆくは有へと

おかゆ/オカ∃/大鹿有生/彼ノ∅有生 の雑記

もやもやのメモ

構造体のセレクタ

golang.jp

セレクタは自動的に構造体へのポインタの間接参照を行います。xが構造体へのポインタ型のときx.yは(*x).yの簡略形として使用可能です。フィールドyも同じく構造体へのポインタ型のときx.y.zも同様に(*(*x).y).zの簡略形です。xが*A型の匿名フィールドを持ち、かつAも同様に構造体であるなら、x.fは(*x.A).fの簡略形です。

どおりで!

new()

golang.jp

組み込み関数newはパラメータに型Tを取り、型*Tの値を返します。

なるほどなあっ!

make()

golang.jp

スライス、マップ、チャネルはnewによる間接的なメモリ割り当てを必要としない、参照型です。組み込み関数makeはパラメータに型Tを取ります。このTはスライス、マップ、チャネル型でなければなりません。またオプションとして式のリスト(作成する種類によって異なる)を取ります。makeはT型(*Tではない)を返します。

なるほどなあっっ?

www.geocities.jp

スライスが配列へのポインタをもって云々というのは分かる(参照してる感が理解できる)けど、マップはどうしてるんだろ?キャパシティ云々のこと考えると、やっぱバックで適当に配列見繕ってマップパターンを実現してるのかな?