Memahami Gelagat Append() pada Slices
Apabila bekerja dengan slice dalam Go, adalah penting untuk memahami bagaimana fungsi append() berinteraksi dengan kepingan yang diluluskan mengikut nilai.
Pertimbangkan coretan kod berikut:
func main() { slice := make([]int, 10, 10) slice[0] = 0 slice[1] = 1 slice1 := slice slice1[0] = 10000 fmt.Println(slice) slice1 = append(slice1, 100) slice1[0] = 20000 fmt.Println(slice) }
Dalam contoh ini, dua keping (hirisan dan keping1) dicipta, dengan slice1 pada mulanya menunjuk ke tatasusunan yang sama seperti keping . Walau bagaimanapun, selepas panggilan append() pertama, slice1 diberikan nilai hirisan baharu yang menunjuk kepada tatasusunan berbeza. Tugasan ini menyebabkan tingkah laku slice1 bebas daripada slice.
Penjelasan:
Pengurusan memori:
Operasi tambah boleh membawa kepada pengagihan semula memori, mencipta tatasusunan baharu dan berpotensi menjejaskan prestasi.Atas ialah kandungan terperinci Bagaimanakah Fungsi `append()` Go Mempengaruhi Gelagat Slice Apabila Dilalui Mengikut Nilai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!