Rumah >pembangunan bahagian belakang >Golang >Pemprosesan penghirisan dan pemetaan dalam lulus parameter fungsi Golang
Apabila menghantar hujah fungsi dalam Go, kepingan dan peta menghantar rujukan dan bukannya nilai. Pengubahsuaian kepingan dalam fungsi akan menjejaskan kepingan dalam fungsi panggilan. Pengubahsuaian pemetaan dalam fungsi juga akan mempengaruhi pemetaan dalam fungsi panggilan. Jika anda perlu menghantar salinan, anda boleh menggunakan fungsi salinan. Apabila berbilang goroutine mengakses kepingan atau peta pada masa yang sama, persaingan data harus dipertimbangkan dan mutex harus digunakan untuk menyegerakkan akses.
Menghiris dan memetakan dalam hantaran parameter fungsi dalam Go
Dalam Go, parameter fungsi boleh menjadi jenis nilai atau jenis rujukan. Jenis nilai disalin apabila parameter diluluskan, manakala jenis rujukan diluluskan melalui rujukan.
Slices
Slices ialah jenis rujukan, jadi rujukan kepadanya diluluskan apabila parameter fungsi diluluskan. Ini bermakna bahawa sebarang perubahan yang dibuat pada elemen hirisan dalam fungsi akan ditunjukkan dalam fungsi yang memanggilnya.
Contoh:
func modifySlice(slice []int) { slice[0] = 100 // 修改切片元素 } func main() { slice := []int{1, 2, 3} modifySlice(slice) // 传递切片引用 fmt.Println(slice) // 输出:[100 2 3] }
Map
Map juga merupakan jenis rujukan, dan rujukannya juga diluluskan apabila parameter fungsi diluluskan. Sama seperti menghiris, sebarang perubahan yang dibuat pada peta dalam fungsi akan ditunjukkan dalam fungsi yang memanggilnya. . Salinan boleh dibuat menggunakan fungsi copy
.
Halang perlumbaan data: Perlumbaan data mungkin berlaku apabila berbilang goroutin mengakses kepingan atau peta yang sama pada masa yang sama. Untuk mengelakkan ini, anda boleh menggunakan kunci mutex (sync.Mutex
) untuk menyegerakkan akses kepada kepingan atau peta.
Atas ialah kandungan terperinci Pemprosesan penghirisan dan pemetaan dalam lulus parameter fungsi Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!