Mengapa Boleh sync.WaitGroup Kaedah Dipanggil pada Nilai Bukan Penunjuk?

Linda Hamilton
Lepaskan: 2024-11-24 02:57:10
asal
542 orang telah melayarinya

Why Can sync.WaitGroup Methods Be Called on Non-Pointer Values?

Kaedah Set penyegerakan.WaitGroup

Penyegerakan.WaitGroup ialah primitif penyegerakan yang membolehkan anda menunggu koleksi gorout selesai . Walaupun dokumentasinya mencadangkan bahawa kaedah Tambah, Selesai dan Tunggu memerlukan penerima penuding, anda juga boleh menggunakannya pada nilai bukan penuding. Bagaimanakah ini boleh berlaku?

Rahsianya terletak pada set kaedah penyegerakan kosong.WaitGroup. Ini bermakna semua kaedah penyegerakan.WaitGroup ialah penerima penunjuk. Apabila anda mencipta nilai jenis penyegerakan.WaitGroup, seperti:

var wg sync.WaitGroup
Salin selepas log masuk

Anda sebenarnya sedang mencipta penuding kepada penyegerakan.WaitGroup struct. Penunjuk ini dinyahrujuk secara automatik apabila anda memanggil kaedah pada pembolehubah wg. Contohnya, kod berikut berjaya dikompilasi:

wg.Add(1)
wg.Done()
wg.Wait()
Salin selepas log masuk

Pengkompil Go secara tersirat menukar wg kepada penuding untuk disegerakkan.WaitGroup sebelum memanggil kaedah. Tingkah laku ini ditakrifkan dalam spesifikasi bahasa Go:

Jika x boleh dialamatkan dan set kaedah &x mengandungi m, x.m() ialah singkatan untuk (&x).m().

Oleh itu, anda boleh memanggil kaedah yang mempunyai penerima penunjuk pada nilai bukan penunjuk jika nilai tersebut boleh ditangani. Nilai bukan penuding sentiasa boleh ditangani dalam Go.

Atas ialah kandungan terperinci Mengapa Boleh sync.WaitGroup Kaedah Dipanggil pada Nilai Bukan Penunjuk?. 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