Rumah > pembangunan bahagian belakang > Golang > Adakah Melepasi 'ini' mengikut Prestasi Kesan Nilai dalam Kaedah Go?

Adakah Melepasi 'ini' mengikut Prestasi Kesan Nilai dalam Kaedah Go?

Patricia Arquette
Lepaskan: 2024-12-19 17:27:10
asal
762 orang telah melayarinya

Does Passing

Adakah Melepasi "ini" mengikut Nilai Merendahkan Prestasi dalam Kaedah Go?

Tidak seperti C di mana argumen fungsi lulus nilai boleh menghasilkan prestasi yang ketara penalti akibat penyalinan berubah-ubah, penerima kaedah Go mengikut paradigma yang berbeza.

Dalam Go, penerima kaedah hanyalah kemudahan sintaksis. Seperti yang ditunjukkan di bawah:

type Something struct {
    Value int
}

func (s *Something) ChangeValue(n int) {
    s.Value = n
}

func main() {
    o := new(Something)
    fmt.Println(o.Value)           // Prints 0
    o.ChangeValue(8)             // Changes o's value to 8
    fmt.Println(o.Value)           // Prints 8
    (*Something).ChangeValue(o, 16) // Same as calling o.ChangeValue(16)
    fmt.Println(o.Value)           // Prints 16
}
Salin selepas log masuk

Perhatikan bahawa penerima dalam ChangeValue ialah penunjuk, menjadikannya serupa dengan rujukan dalam C . Jika penerima ialah jenis nilai, ia tidak akan membenarkan mutasi nilai.

Oleh itu, pendekatan penerima penunjuk Go memastikan pengkapsulan dan menghalang penyalinan keseluruhan contoh "ini", tidak seperti penalti prestasi yang diperhatikan dalam C/C untuk menghantar hujah mengikut nilai.

Atas ialah kandungan terperinci Adakah Melepasi 'ini' mengikut Prestasi Kesan Nilai dalam Kaedah Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan