公開変数をコピーするにはどうすればいいですか?公開変数をコピーするにはどうすればいいですか?
例えば、PublicVar
という名前のパブリックvariadblea := []string{"A", "B"}
b := a
fmt.Printf("%v\n", a)
fmt.Printf("%v\n", b)
b[0] = "C"
fmt.Printf("%v\n", a)
fmt.Printf("%v\n", b)
// a has been changed.
はPublicVarの名前が変更されますが、これは私が欲しいものではありません。
私はPublicVarの値をコピーしたいだけです。
'TEMP:= PublicVar'を**値をコピーしないと、何もしません。 Go(エクスポートまたは非エクスポート)変数の「名前を変更する」ことは不可能です。あなたは何をしようとしているのですか? – Volker
@Volker実際にはtemp:= PublicVarは常に値をコピーしません。たとえば、PublicVarがスライス、チャネル、またはマップを参照している場合、tempもデータの同じコピーを参照します。 –
@Nipunスライスのチャンネルとマップは参照型なので、そうです。 ':='の動作が異なるためではありません。それは常に*値*をコピーします。スライス、チャンネル、マップの場合、値は参照値です。 –