Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Mengembalikan Jenis Konkrit daripada Kaedah Antara Muka dalam Go?
Kaedah Antara Muka Mengembalikan Antara Muka dan Jenis Konkrit
Dalam Go, kaedah antara muka yang mengembalikan antara muka menawarkan fleksibiliti untuk pelaksanaan jenis. Walau bagaimanapun, percubaan untuk melaksanakan kaedah sedemikian dengan jenis konkrit boleh membawa kepada ralat.
Pertimbangkan contoh:
<code class="go">func GetStringer() fmt.Stringer</code>
Di mana GetStringer ialah kaedah antara muka yang mengembalikan antara muka fmt.Stringer.
Jika jenis konkrit, seperti Foo, dilaksanakan untuk mengembalikan nilai dirinya (*Foo), ralat akan berlaku. Ini kerana Foo tidak melaksanakan fmt.Stringer secara langsung.
Untuk menyelesaikan isu ini, beberapa pendekatan boleh diambil:
Menggunakan Jenis Penyesuai
Buat jenis penyesuai yang membalut jenis konkrit dan mematuhi antara muka yang diperlukan:
<code class="go">type MyBar struct{ Bar } func (b *MyBar) GetStringer() fmt.Stringer { return b.Bar.GetStringer() }</code>
Pendekatan ini membenarkan sambungan tanpa mengubah suai Bar jenis asal.
Membalut dengan Antara Muka
Sebagai alternatif, jenis konkrit boleh dibalut terus dengan antara muka yang diperlukan:
<code class="go">func (b *Bar) GetStringer() fmt.Stringer { return &Foo{"foo"} }</code>
Di sini, Bar jenis konkrit menyediakan pelaksanaan kaedah GetStringer yang mengembalikan contoh daripada jenis Foo, yang melaksanakan fmt.Stringer.
Kedua-dua kaedah menyediakan pilihan untuk menampung pulangan kaedah antara muka dengan jenis konkrit dalam Go. Pendekatan yang sesuai bergantung pada keperluan khusus dan seni bina kod.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengembalikan Jenis Konkrit daripada Kaedah Antara Muka dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!