golangのアレイと取り扱いについて
golangで使用するアレイの取り扱いについて質問させていただきます。
サンプルコードの後に、詳しい質問をさせていただきます。
package main
import "fmt"
func main() {
x := []int{1,2,3}
y := x
var z []int
for _, v := range x {
z = append(z, v)
}
x[1] = 4
fmt.Println(x)
fmt.Println(y)
fmt.Println(z)
}
コードの中では、まずxというアレイを作成します。そのアレイを別の方法で2つのアレイ(y, z)にコピーしています。
yはそのままコピーし、zはアレイの各要素をひとつづつコピーして作成します。
その後xの中身だけを変更し、すべてのアレイをPrintしているだけです。
質問ですが、
なぜyアレイも同時に変更されてしまうのでしょうか?
また、yのように作成したアレイもxとはシンクロさせない方法はあるのでしょうか?
ご教授お願いします。