Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Melaksanakan Antara Muka dengan Antara Muka sebagai Jenis Pulangan dalam Go?

Bagaimana untuk Melaksanakan Antara Muka dengan Antara Muka sebagai Jenis Pulangan dalam Go?

Susan Sarandon
Lepaskan: 2024-11-14 17:46:02
asal
981 orang telah melayarinya

How to Implement an Interface with an Interface as Return Type in Go?

Mengatasi Halangan Melaksanakan Antara Muka dengan Antara Muka Sebagai Jenis Pulangan dalam Go

Dalam Go, ralat mungkin akan berlaku semasa cuba melaksanakan antara muka dengan jenis pulangan yang juga merupakan antara muka. Soalan ini membincangkan isu ini, menyediakan penyelesaian yang menyelesaikan ralat.

Kod yang disediakan menunjukkan antara muka IA dengan kaedah FB(), yang dijangka mengembalikan antara muka IB. Walau bagaimanapun, pelaksanaan FB dalam struct A mengembalikan jenis konkrit *B dan bukannya IB.

Untuk membetulkan ralat ini, cuma ubah suai jenis pulangan FB dalam struct A menjadi IB dan bukannya *B:

func (a *A) FB() IB {
    return a.b
}
Salin selepas log masuk

Pindaan ini memastikan A melaksanakan antara muka IA dengan betul dan menyelesaikan ralat.

Antaramuka Merentas Pakej

Soalan juga bertanya tentang mentakrifkan antara muka dalam pakej berasingan. Pendekatan ini boleh dilaksanakan dalam Go, membolehkan anda berkongsi antara muka merentas pakej yang berbeza. Walau bagaimanapun, apabila pelaksanaan berada dalam pakej yang berbeza, anda perlu menggunakan nama antara muka yang layak sepenuhnya dalam pelaksanaan.

Sebagai contoh, jika IA dan IB ditakrifkan dalam pakej foo dan pelaksanaan berada dalam bar pakej, pengisytiharan dalam bar pakej ialah:

type IA interface {
    FB() foo.IB
}
Salin selepas log masuk

Sementara pelaksanaan dalam bar akan menjadi:

func (a *A) FB() foo.IB {
    return a.b
}
Salin selepas log masuk

Pelarasan ini memastikan bahawa jenis pemulangan FB sepadan dengan jenis yang dijangkakan yang dinyatakan dalam Antara muka IA, tanpa mengira pakej yang mana antara muka ditakrifkan.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Antara Muka dengan Antara Muka sebagai Jenis Pulangan dalam Go?. 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