Go 言語ではスライスと変数は異なります。スライスは基になる配列を参照する参照型であるのに対し、変数は値を直接保存します。変数への代入では新しいコピーが作成され、スライスへの代入では同じ配列を指す新しいスライスが作成されます。スライスは参照を使用するため、1 つのスライスを変更すると、同じ配列を参照する他のスライスに影響を与える可能性がありますが、変数は影響を受けません。
Go 言語のスライスは、基になる配列を指すことができる参照型です。これは、値を直接保存する変数とは異なります。
スライスは 3 つの部分で構成されます。
mySlice := []int{1, 2, 3} // 创建一个整型切片,包含元素 1、2 和 3
変数には値が格納されます。基礎となるデータ構造を参照するのではなく、直接参照します。
myVar := 1 // 创建一个整型变量,值为 1
1.代入
変数に値を代入すると、変数の新しいコピーが作成されます:
var1 := 1 var2 := var1 var1 = 2 // 修改 var1 的值 fmt.Println(var1, var2) // 输出:2 1
And slicing 割り当てを行うと、同じ基になる配列を指す新しいスライスが作成されます:
slice1 := []int{1, 2, 3} slice2 := slice1 slice1[0] = 4 // 修改 slice1 中的元素 fmt.Println(slice1, slice2) // 输出:\[4 2 3\] \[4 2 3\]
2. メモリ管理
変数は値を直接保存するため、割り当て新しい変数は他の変数に影響を与えません。スライスは参照を使用するため、スライスを変更すると、同じ基礎となる配列を参照する他のスライスに影響を与える可能性があります。
3. 関数への渡し
変数は値として関数に渡され、スライスは参照として関数に渡されます。これは、関数はスライスを変更できますが、変数は変更できないことを意味します。
スライスを受け入れてソートする関数を考えてみましょう。変数 nums
と result
は、同じ基になる配列を参照している場合でも、2 つの異なるスライスとして扱われます。
以上がGo 言語のスライスと変数の違いを理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。