Membenamkan Struktur dengan Nama Yang Sama dalam Struktur
Soalan memfokuskan pada membenamkan dua struct dengan nama yang sama dalam satu struct. Biasanya, percubaan untuk berbuat demikian mengakibatkan ralat medan pendua, seperti yang ditunjukkan oleh coretan kod berikut:
type datastore struct { *sql.Store *file.Store }
Taip Alias sebagai Penyelesaian
Untuk memintas perkara ini isu, penyelesaian yang disyorkan ialah menggunakan alias jenis. Dengan memberikan nama alternatif kepada salah satu struct terbenam, pengkompil Go membezakan antara dua kejadian. Pertimbangkan kod yang diubah suai berikut:
type SqlStore = sql.Store // this is a type alias type datastore struct { *SqlStore *file.Store }
Dalam senario ini, SqlStore berfungsi sebagai alias untuk jenis sql.Store asal. Oleh itu, medan terbenam dalam stor data kini dibezakan sebagai *SqlStore dan *file.Store, dengan berkesan menyelesaikan konflik medan pendua.
Faedah Alias Jenis
Tidak seperti pengisytiharan jenis tradisional, alias jenis tidak memperkenalkan jenis baharu yang berasingan. Sebaliknya, ia hanya mencipta nama ganti untuk jenis sedia ada. Akibatnya, ia mengekalkan tingkah laku dan ciri jenis asal. Dengan memanfaatkan alias jenis, pembangun boleh mengelak daripada mengubah suai pelaksanaan asas sambil mengekalkan keserasian dengan kod luaran.
Pilihan Ganti
Selain daripada alias jenis, terdapat beberapa pendekatan alternatif untuk mencapai kefungsian yang diingini:
Atas ialah kandungan terperinci Bagaimana untuk Membenamkan Struct dengan Nama Yang Sama dalam Go Struct?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!