Mengapa sync.WaitGroup Berfungsi dengan Penerima Nilai?
Jenis sync.WaitGroup menawarkan set kaedah kosong, bermakna ia tidak mempunyai kaedah ditakrifkan secara langsung pada jenisnya. Walau bagaimanapun, ia mempunyai kaedah dengan penerima penunjuk. Ini menimbulkan persoalan mengapa kaedah ini boleh dipanggil pada penerima nilai.
Jawapannya terletak pada spesifikasi bahasa Go. Khususnya, jika pembolehubah boleh dialamatkan dan set kaedahnya termasuk kaedah dengan penerima penunjuk, sintaks x.m() ialah singkatan untuk (&x).m().
Dalam contoh yang diberikan:
var wg sync.WaitGroup wg.Add(1) wg.Done()
Ini adalah contoh penggunaan penerima nilai untuk kaedah penunjuk. Pengkompil secara automatik menjana kod yang setara:
(&wg).Add(1) (&wg).Done()
Ini membenarkan penggunaan penerima nilai walaupun pelaksanaan kaedah sebenar memerlukan penerima penunjuk.
Atas ialah kandungan terperinci Mengapakah Saya Boleh Menggunakan Penerima Nilai dengan sync.Kaedah Penunjuk WaitGroup?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!