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 }
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 }
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!