2016-11-18 9 views
17

地図はGoで値または参照によって渡されますか?地図はGoで値渡しまたは参照渡しされますか?

関数を次のように定義することは常に可能ですが、これは過剰ですか?

func foo(dat *map[string]interface{}) {...} 

戻り値と同じ質問です。マップへのポインタを返すか、マップを値として返すべきですか?

もちろん、不必要なデータコピーを避けることはもちろんです。このスレッドで

+3

ます。https:/

地図の種類は

あなたは、ポインタを使用することができ、セッションを変更するために必要な場合は、[1]のポインタまたはスライスのように、参照型です/blog.golang.org/go-maps-in-action:マップタイプは、ポインタやスライスのような参照タイプなので、上記のmの値はnilです。初期化されたマップを指していません。 nilマップは、読み込み時に空のマップのように動作しますが、nilマップに書き込もうとするとランタイムパニックが発生します。それをしないでください。マップを初期化するには、組み込み関数 –

+1

を使用します.Goのすべてが値渡しになります。いくつかの値は、ポインター、またはポインターを含む構造体です。 (アドレスでマップ値を再割り当てする必要がある場合は、場合によっては '*マップが必要な場合があります) – JimB

答えて

関連する問題