Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Melaksanakan Kaedah `Save()` Biasa untuk Go Structs Berkongsi Medan?

Bagaimana untuk Melaksanakan Kaedah `Save()` Biasa untuk Go Structs Berkongsi Medan?

Susan Sarandon
Susan Sarandonasal
2024-11-24 07:03:11373semak imbas

How to Implement a Common `Save()` Method for Go Structs Sharing a Field?

Cara Melaksanakan Kaedah Biasa untuk Struktur dengan Medan Dikongsi dalam Go

Apabila bekerja dengan struct yang berkongsi medan yang sama, ia mungkin wajar untuk menambah kaedah yang boleh digunakan untuk kesemuanya. Soalan ini meneroka senario ini dalam konteks Beego/ORM, di mana dua struct, ModelA dan ModelB, memerlukan kaedah Save().

Cadangan Penyelesaian

  • Definisi Antara Muka: Tentukan antara muka yang dipanggil Savable yang mengisytiharkan kaedah Save(). Laksanakan antara muka ini untuk kedua-dua ModelA dan ModelB untuk membolehkan mereka menggunakan fungsi Save().

<br>taip antara muka Savable {</p>
<pre class="brush:php;toolbar:false">Save()

}

func (ModelA) Save() {

// Implementation for ModelA

}

func (b ModelB) Save() {

// Implementation for ModelB

}

  • Pembenaman: Cipta struct asas yang dipanggil ModelC yang mengandungi medan Panduan dikongsi. Benamkan struct ini ke dalam ModelA dan ModelB. Tentukan kaedah Save() dalam ModelC untuk menjadikannya tersedia kepada kedua-dua ModelA dan ModelB.


taip struct ModelC {

Guid string `orm:"pk"`

}

ralat func (c ModelC) Save(). {

// Implementation for ModelC

}

taip ModelA struct {

ModelC
FiledA string

}

taip ModelB struct {

ModelC
FiledB string

}

Berhati-hati dengan Pembenaman

Perlu diambil perhatian bahawa pembenaman mempunyai had tertentu. Walaupun kaedah Save() terbenam akan tersedia untuk ModelA dan ModelB, sebarang medan tambahan khusus untuk struct ini tidak akan disertakan secara automatik dalam operasi Save().

Kesimpulan

Penyelesaian yang paling sesuai bergantung pada keperluan khusus sistem. Jika pelaksanaan Save() berbeza dengan ketara antara ModelA dan ModelB, pendekatan antara muka memberikan fleksibiliti yang lebih besar. Walau bagaimanapun, jika mereka berkongsi pelaksanaan yang sama, pembenaman mungkin lebih cekap kerana ia menghapuskan keperluan untuk kod berlebihan.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Kaedah `Save()` Biasa untuk Go Structs Berkongsi Medan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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