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
Lepaskan: 2024-11-24 07:03:11
asal
392 orang telah melayarinya

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>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">Save()
Salin selepas log masuk

}

func (ModelA) Save() {

// Implementation for ModelA
Salin selepas log masuk

}

func (b ModelB) Save() {

// Implementation for ModelB
Salin selepas log masuk

}

  • 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"`
Salin selepas log masuk

}

ralat func (c ModelC) Save(). {

// Implementation for ModelC
Salin selepas log masuk

}

taip ModelA struct {

ModelC
FiledA string
Salin selepas log masuk

}

taip ModelB struct {

ModelC
FiledB string
Salin selepas log masuk

}

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!

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
Cadangan popular
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan