Golangのスライスについて教えて下さい。
Golangであるスライスz = []Hogeを持つ構造体Aがあります。
type A struct{
z []Hoge
}
このaの特定要素をAのメソッドBで新たに生成したスライスcにコピーし、それを返します。
func (a *A) B()[]Hoge{
c := make([]Hoge, 2)
c[0] = a.z[0]
c[1] = a.z[1]
return c
}
そこでこのcの要素に新たな値を代入するとa.zの要素まで変化してしまいます。おそらく、cがzの参照を持っているのだと思いますが、これを防ぐにはどうすればいいのでしょうか。ちなみにメソッドの*AをAに変えてやってみましたができませんでした。
c[0].Huga = "piyo"
//a.z[0]の要素までpiyoになる
追記:
上の説明がわかりづらかったので、例を作りました。よろしくお願いします。
https://play.golang.org/p/8c6ca441_Z