34

最近Goに飛び込み始めたばかりですが、大きな混乱のポイントが1つあります。それは、ポインターを明示的に逆参照する必要がある場合を正確に理解するのに苦労していることです。

たとえば、.演算子がポインターの間接参照を処理することを知っています

ptr := new(SomeStruct)
ptr.Field = "foo" //Automatically dereferences

他にどのようなシナリオでこれを行いますか?たとえば、配列のようです。

ptr := new([5][5]int)
ptr[0][0] = 1

仕様でこれを見つけることができませんでした。ポインタのセクションは非常に短く、間接参照にも触れていません。goのポインタを逆参照するためのルールを明確にするとよいでしょう。

4

1 に答える 1

44

セレクター式(例x.f)は次のことを行います。

セレクターは、構造体へのポインターを自動的に逆参照します。xが構造体へのポインタである 場合、は;x.yの省略形です。(*x).yフィールドyが構造体へのポインタでもある場合、x.y.zはの省略形(*(*x).y).zなどです。構造体型でもあるタイプ xの匿名フィールドが含まれている場合は、のショートカットです。*AAx.f(*x.A).f

索引付け操作の定義は、配列ポインターに索引付けできることを指定しています。

のタイプAまたは*AwhereAが配列タイプの場合、またはのタイプのS場合Sスライスタイプ

于 2012-11-23T17:54:09.770 に答える