Melalui Slices melalui Rujukan untuk Mengubah Suai Slice Asal
Dalam Go, hirisan diluluskan mengikut nilai, yang bermaksud mengubah suai kepingan dalam fungsi tidak akan menjejaskan kepingan asal di luar fungsi. Untuk mengatasi pengehadan ini, anda boleh menghantar penuding ke hirisan, membenarkan fungsi mengubah suai hirisan asal melalui rujukan.
Melalukan Penunjuk kepada Hiris
Kepada hantar penuding ke hirisan, tandatangan fungsi mesti menyertakan jenis penunjuk untuk hirisan parameter:
func modifySlice(slice *[]int) { *slice = append(*slice, 4) }
Contoh:
nums := []int{1, 2, 3} modifySlice(&nums) fmt.Println(nums) // Prints [1, 2, 3, 4]
Dalam contoh ini, fungsi modifySlice mengambil penunjuk ke sepotong integer. Di dalam fungsi, pengendali asterisk (*) membatalkan rujukan penuding untuk mendapatkan kepingan asal, kemudian menambahkan 4 pada kepingan.
Mengembalikan Slice yang Diubah Suai
Pendekatan lain adalah untuk mengembalikan kepingan yang diubah suai daripada fungsi:
nums := []int{1, 2, 3} func modifyAndReturnSlice(slice []int) []int { return append(slice, 4) } nums = modifyAndReturnSlice(nums) fmt.Println(nums) // Prints [1, 2, 3, 4]
Pendekatan ini adalah idiomatik dalam Go dan tidak perlu menghantar penuding ke hirisan.
Memilih Pendekatan yang Sesuai
Pilihan antara menghantar penuding ke hirisan atau mengembalikan kepingan yang diubah suai bergantung pada keperluan khusus bagi fungsi dan struktur kod anda. Melepasi penuding selalunya berguna apabila anda perlu mengulang dan mengubah suai berbilang kepingan atau jika pengubahsuaian adalah rumit. Mengembalikan kepingan yang diubah suai adalah lebih baik apabila fungsi hanya perlu mengubah suai satu keping dan pengubahsuaian adalah mudah.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengubah Suai Go Slice dalam Fungsi dan Menunjukkan Perubahan dalam Slice Asal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!