Bagaimana boleh menaip komposisi kaedah merampingkan pelaksanaan dalam Go?

Linda Hamilton
Lepaskan: 2024-10-26 19:40:30
asal
563 orang telah melayarinya

 How Can Type Composition Streamline Method Implementation in Go?

Golang: Merangkul Komposisi Jenis untuk Pelaksanaan Kaedah Disatukan

Dalam pengaturcaraan berorientasikan objek, kadangkala struct yang berbeza mungkin berkongsi medan atau fungsi yang sama. Untuk mengendalikan senario sedemikian, amalan biasa adalah untuk menentukan antara muka yang kedua-dua struct melaksanakan. Walau bagaimanapun, pendekatan ini memerlukan penentuan kaedah berasingan untuk setiap struct, yang membawa kepada pertindihan kod.

Pendekatan yang lebih cekap ialah memanfaatkan prinsip komposisi jenis. Daripada menggunakan antara muka, kami boleh menentukan jenis tersuai yang mewakili medan kongsi (cth., Versi dalam contoh yang disediakan). Memandangkan jenis tersuai boleh berfungsi sebagai penerima kaedah, kami boleh mencipta kaedah untuk jenis ini dan kemudian membenamkannya dalam kedua-dua struct.

Pertimbangkan pelaksanaan berikut:

<code class="go">type Version string

func (v Version) PrintVersion() {
    fmt.Println("Version is", v)
}

type Game struct {
    Name               string
    MultiplayerSupport bool
    Genre              string
    Version            Version
}

type ERP struct {
    Name               string
    MRPSupport         bool
    SupportedDatabases []string
    Version            Version
}</code>
Salin selepas log masuk

Kini, kita boleh menggunakan kaedah PrintVersion pada kedua-dua struktur Permainan dan ERP:

<code class="go">func main() {

    g := Game{
        "Fear Effect",
        false,
        "Action-Adventure",
        "1.0.0",
    }

    g.PrintVersion()
    // Version is 1.0.0


    e := ERP{
        "Logo",
        true,
        []string{"ms-sql"},
        "2.0.0",
    }

    e.PrintVersion()
    // Version is 2.0.0

}</code>
Salin selepas log masuk

Pendekatan ini menghapuskan pertindihan kod dan menyediakan cara yang bersatu untuk mencetak versi untuk kedua-dua struct. Selain itu, ia boleh diperluaskan untuk mengendalikan medan atau fungsi biasa yang lain.

Atas ialah kandungan terperinci Bagaimana boleh menaip komposisi kaedah merampingkan pelaksanaan 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!