array
およびslice
データ型と混同していることに気づきました。
Go docs から、配列は次のように説明されています。
Go と C で配列が機能する方法には大きな違いがあります。Go では、
- 配列は値です。ある配列を別の配列に代入すると、すべての要素がコピーされます。
- 特に、配列を関数に渡すと、配列へのポインターではなく、配列のコピーを受け取ります。
- 配列のサイズは、その型の一部です。[10]int 型と [20]int 型は異なります。
機能:
C ファミリーのすべての言語と同様に、Go のすべては値渡しです。つまり、関数は常に、値をパラメーターに代入する代入ステートメントがあるかのように、渡されるもののコピーを取得します。たとえば、関数に int 値を渡すと int のコピーが作成され、ポインター値を渡すとポインターのコピーが作成されますが、ポインターが指すデータは作成されません。
sort.Ints(arrayValue)
スライスではなく配列として宣言したときに、渡された変数を変更するのはなぜですか?
コード
var av = []int{1,5,2,3,7}
fmt.Println(av)
sort.Ints(av)
fmt.Println(av)
return
出力
[1 5 2 3 7]
[1 2 3 5 7]