Rumah > pembangunan bahagian belakang > Golang > Fahami perbezaan antara kepingan dan pembolehubah dalam bahasa Go

Fahami perbezaan antara kepingan dan pembolehubah dalam bahasa Go

王林
Lepaskan: 2024-04-02 18:42:01
asal
419 orang telah melayarinya

Slices dan pembolehubah berbeza dalam bahasa Go: slices ialah jenis rujukan dan merujuk kepada tatasusunan asas, manakala pembolehubah menyimpan nilai secara langsung. Tugasan kepada pembolehubah mencipta salinan baharu, manakala tugasan kepada kepingan mencipta kepingan baharu yang menunjuk kepada tatasusunan yang sama. Slices menggunakan rujukan, jadi mengubah suai satu kepingan boleh menjejaskan kepingan lain yang merujuk tatasusunan yang sama, tetapi pembolehubah tidak terjejas.

Fahami perbezaan antara kepingan dan pembolehubah dalam bahasa Go

Fahami perbezaan antara kepingan dan pembolehubah dalam bahasa Go

Slices dalam bahasa Go ialah jenis rujukan yang boleh menghala ke tatasusunan asas. Ini tidak seperti pembolehubah, yang menyimpan nilainya secara langsung.

Slices

Sekeping terdiri daripada tiga bahagian:

  • Penunjuk: Menunjuk ke kedudukan permulaan tatasusunan pendasar
  • Panjang: Bilangan unsur dalam hirisan
  • Kapasiti: Bilangan unsur tatasusunan yang tersedia dalam dasar daripada kepingan
mySlice := []int{1, 2, 3} // 创建一个整型切片,包含元素 1、2 和 3
Salin selepas log masuk

Pembolehubah

Pembolehubah menyimpan nilainya secara langsung dan bukannya merujuk struktur data asas.

myVar := 1 // 创建一个整型变量,值为 1
Salin selepas log masuk

Perbezaan

1. Tugasan

Tugasan kepada pembolehubah mencipta salinan baharu pembolehubah:

var1 := 1
var2 := var1

var1 = 2 // 修改 var1 的值

fmt.Println(var1, var2) // 输出:2 1
Salin selepas log masuk

Dan tugasan kepada kepingan mencipta kepingan baharu yang menunjuk ke tatasusunan asas yang sama:

slice1 := []int{1, 2, 3}
slice2 := slice1

slice1[0] = 4 // 修改 slice1 中的元素

fmt.Println(slice1, slice2) // 输出:\[4 2 3\] \[4 2 3\]
Salin selepas log masuk
:

Pembolehubah Terurus Memori

menyimpan nilainya secara langsung, jadi menetapkan pembolehubah baharu tidak menjejaskan pembolehubah lain. Slices menggunakan rujukan, jadi mengubah suai kepingan boleh menjejaskan kepingan lain yang merujuk tatasusunan asas yang sama.

3. Melepasi kepada fungsi

Pembolehubah dihantar kepada fungsi sebagai nilai, manakala kepingan dihantar ke fungsi sebagai rujukan. Ini bermakna fungsi boleh mengubah suai kepingan, tetapi bukan pembolehubah.

Contoh Praktikal

Pertimbangkan fungsi yang mengambil kepingan dan menyusunnya. Pembolehubah

dianggap sebagai dua kepingan berbeza, walaupun ia merujuk kepada tatasusunan asas yang sama. numsresultrreeee

Atas ialah kandungan terperinci Fahami perbezaan antara kepingan dan pembolehubah dalam bahasa Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan