Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Mengelakkan Pelaksanaan Kaedah Berlebihan Apabila Menggunakan Antara Muka Go?

Bagaimanakah Saya Boleh Mengelakkan Pelaksanaan Kaedah Berlebihan Apabila Menggunakan Antara Muka Go?

DDD
Lepaskan: 2024-11-13 04:28:02
asal
328 orang telah melayarinya

How Can I Avoid Redundant Method Implementations When Using Go Interfaces?

Mengatasi Lebihan dalam Melaksanakan Kaedah untuk Pelbagai Jenis dengan Antara Muka Go

Dalam Go, antara muka menyediakan cara untuk menentukan tandatangan kaedah biasa yang boleh dilaksanakan oleh pelbagai jenis. Walaupun ini membenarkan polimorfisme dan penggunaan semula kod, ia boleh membawa kepada pelaksanaan berlebihan apabila berbilang jenis melaksanakan antara muka yang sama.

Pertimbangkan senario berikut: kami mempunyai dua struktur, Pertama dan Kedua, yang kedua-duanya perlu melaksanakan antara muka A dengan kaedah PrintStr(). Melaksanakan kaedah dalam setiap struct secara individu akan menjadi berlebihan.

type First struct {
    str string
}

type Second struct {
    str string
}

type A interface {
    PrintStr()
}

func (f First) PrintStr() {
    fmt.Print(f.str)
}

func (s Second) PrintStr() {
    fmt.Print(s.str)
}
Salin selepas log masuk

Mengatasi Lebihan

Daripada menduplikasi pelaksanaan, kita boleh mencipta jenis asas yang merangkumi perkara biasa kefungsian. Jenis asas ini kemudiannya boleh dibenamkan ke dalam Pertama dan Kedua, membolehkan mereka menggunakan semula pelaksanaan tunggal.

type WithString struct {
    str string
}

type First struct {
    WithString
}

type Second struct {
    WithString
}

type A interface {
    PrintStr()
}

func (w WithString) PrintStr() {
    fmt.Print(w.str)
}
Salin selepas log masuk

Pendekatan ini menghapuskan lebihan dan mengekalkan keselamatan jenis. Jenis asas WithString bertindak sebagai cara mudah untuk mengumpulkan kefungsian biasa, yang boleh digunakan semula oleh berbilang jenis.

Penggunaan

Untuk menggunakan kaedah PrintStr(), kami hanya buat contoh Pertama atau Kedua dan benamkan jenis WithString.

a := First{
    WithString: WithString{
        str: "foo",
    },
}
Salin selepas log masuk

Kesimpulan

Dengan menggunakan jenis asas dan pembenaman, kami boleh menyelaraskan pelaksanaan kaedah untuk jenis yang berbeza yang melaksanakan antara muka yang sama. Pendekatan ini menggalakkan penggunaan semula kod, mengurangkan lebihan dan memastikan keselamatan jenis.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengelakkan Pelaksanaan Kaedah Berlebihan Apabila Menggunakan Antara Muka 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan