Dalam Go, kesatuan, struktur data biasa dalam bahasa lain, sememangnya tiada. Walau bagaimanapun, situasi seperti mengendalikan penggunaan jenis pilihan XML yang berlebihan memerlukan pelaksanaannya.
Percubaan untuk mensimulasikan kesatuan dalam Go, seperti yang ditunjukkan dalam coretan kod yang disediakan, memperkenalkan lebihan kod yang ketara. Keperluan untuk struct kontena yang berasingan dan pembina untuk setiap jenis, bersama-sama dengan berbilang predikat dan pengambil, membebankan pelaksanaan.
Untuk memudahkan pengendalian kesatuan, pertimbangkan untuk mencipta antara muka yang dipanggil Misc yang berfungsi sebagai penanda untuk objek kesatuan jenis:
type Misc interface { ImplementsMisc() } type Comment Chars func (c Comment) ImplementsMisc() {} type ProcessingInstruction func (p ProcessingInstruction) ImplementsMisc() {}
Dengan antara muka ini disediakan, fungsi boleh disesuaikan semata-mata kepada objek Pelbagai tanpa mengambil berat tentang jenis asas tertentu. Keselamatan jenis dicapai dengan memastikan bahawa sebarang objek yang dihantar kepada fungsi ini mesti melaksanakan Pelbagai.
Walaupun Go kekurangan sokongan kesatuan terbina dalam, pelaksanaan kesatuan boleh dilakukan dengan meniru tingkah laku mereka melalui struktur bersarang dan antara muka. Lebihan kod yang wujud dalam pendekatan ini boleh dikurangkan dengan menggunakan antara muka sebagai penanda untuk objek kesatuan.
Atas ialah kandungan terperinci Bagaimanakah Kami Boleh Melaksanakan Kesatuan Jenis-Selamat dengan Cekap dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!