Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana boleh menaip komposisi kaedah merampingkan pelaksanaan dalam Go?

Bagaimana boleh menaip komposisi kaedah merampingkan pelaksanaan dalam Go?

Linda Hamilton
Linda Hamiltonasal
2024-10-26 19:40:30554semak imbas

 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>

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>

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!

Kenyataan:
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