Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Membenamkan Struct dengan Nama Yang Sama dalam Go Struct?

Bagaimana untuk Membenamkan Struct dengan Nama Yang Sama dalam Go Struct?

Patricia Arquette
Lepaskan: 2024-11-02 20:21:03
asal
314 orang telah melayarinya

How to Embed Structs with Identical Names in a Go Struct?

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
}
Salin selepas log masuk

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
}
Salin selepas log masuk

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:

  • Buat struct pembalut: Tentukan struct baharu yang merangkumi kedua-dua struct terbenam, dengan berkesan mencipta bekas untuknya.
  • Melaksanakan pembenaman antara muka: Gunakan pembenaman antara muka untuk melaksanakan fungsi yang diingini tanpa membenamkan struktur secara langsung. Ini memberikan lebih fleksibiliti dan penyahgandingan.
  • Gunakan gubahan: Karang kefungsian yang diingini melalui struktur yang berasingan, mengelakkan keperluan untuk benam. Pendekatan ini menggalakkan enkapsulasi dan modulariti.

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!

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