Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk mengelakkan penyalinan nilai dalam parameter fungsi Golang lulus
Dalam Go, cara untuk mengelakkan penyalinan nilai parameter fungsi adalah dengan menghantar parameter menggunakan penunjuk dan menambah asterisk (*) sebelum jenis parameter. Untuk struct dan hirisan, hantarkannya dengan rujukan, struct menggunakan penunjuk ke struktur dan hirisan menggunakan penunjuk ke data hirisan.
Cara untuk mengelakkan penyalinan nilai dalam parameter fungsi yang dihantar dalam Go
Dalam Go, parameter fungsi diluluskan secara nilai secara lalai. Ini boleh menyebabkan penyalinan nilai dan overhed prestasi yang tidak perlu. Untuk mengelakkan ini, parameter boleh diluluskan menggunakan penunjuk atau rujukan.
Lulus parameter menggunakan penunjuk
Untuk menghantar parameter menggunakan penunjuk, tambahkan asterisk (*
):
func myFunc(p *int) { // 对指针 p 进行操作 }
使用指针传递参数可以修改函数外部的变量值:
var x int myFunc(&x) fmt.Println(x) // 输出修改后的 x
使用引用传递结构体和切片
对于结构体和切片,可以通过使用引用传递它们来避免值复制:
*MyStruct
)[]int
type MyStruct struct { Value int } func myFunc(s *MyStruct) { // 对 s 进行操作 }
func sum(a, b int) int { return a + b }Lulus struct dan hirisan menggunakan rujukan
Untuk struct dan hirisan, anda boleh mengelakkan penyalinan nilai dengan menghantarnya melalui rujukan:
Struktur:
Gunakan penunjuk ke struct (Gunakan penunjuk ke data hirisan ([]int
)
rreeeKes sebenar:
Andaikan kita mempunyai fungsi yang mengira jumlah dua nombor: 🎜
func sum(a, b *int) { *a += *b }🎜Jika kita lulus hujah mengikut nilai, salinan akan dibuat setiap kali fungsi ini dipanggil. Ini mahal untuk bilangan besar atau struktur data yang kompleks. 🎜🎜Kita boleh mengoptimumkan fungsi ini dengan menggunakan penunjuk: 🎜rrreee🎜Sekarang apabila kita memanggil fungsi ini, ia akan mengubah suai terus parameter yang dihantar, sekali gus mengelakkan salinan yang tidak diperlukan. 🎜🎜🎜Kesimpulan: 🎜🎜🎜Dengan menghantar parameter menggunakan penunjuk atau rujukan, anda boleh mengelakkan penyalinan nilai dalam parameter fungsi yang lulus dalam Go, dengan itu meningkatkan prestasi. Ini amat penting apabila berurusan dengan data besar atau struktur data yang kompleks. 🎜
Atas ialah kandungan terperinci Bagaimana untuk mengelakkan penyalinan nilai dalam parameter fungsi Golang lulus. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!