Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Melaksanakan Pelbagai Antara Muka dalam Go untuk Satu Jenis?

Bagaimanakah Saya Boleh Melaksanakan Pelbagai Antara Muka dalam Go untuk Satu Jenis?

Mary-Kate Olsen
Lepaskan: 2024-11-24 06:39:15
asal
399 orang telah melayarinya

How Can I Implement Multiple Interfaces in Go for a Single Type?

Berbilang Antara Muka dalam Go

Go tidak menyokong berbilang warisan, tetapi adalah mungkin untuk melaksanakan berbilang antara muka untuk satu jenis. Ini membolehkan anda menentukan jenis yang mematuhi keperluan berbilang antara muka.

Dalam contoh anda, anda mempunyai antara muka Kad dan struktur kad yang melaksanakan antara muka Kad. Anda mahu boleh menggunakan antara muka Kad untuk mewakili kad, tetapi anda juga mahu mempunyai perwakilan rentetan kad.

Untuk menyelesaikannya, anda boleh mentakrifkan antara muka Stringer:

type Stringer interface {
    String() string
}
Salin selepas log masuk

Dan kemudian minta struct kad melaksanakan kedua-dua antara muka Kad dan Stringer:

type card struct {
    cardNum int
    face    string
    suit    string
}

func (c *card) GetFace() string {
    return c.face
}

func (c *card) GetSuit() string {
    return c.suit
}

func (c *card) String() string {
    return fmt.Sprintf("%s%s", c.GetFace(), c.GetSuit())
}
Salin selepas log masuk

Ini akan membolehkan anda menggunakan antara muka Kad untuk mewakili kad, dan anda juga boleh menggunakan antara muka Stringer untuk mendapatkan perwakilan rentetan kad.

Perhatikan bahawa pendekatan ini tidak menyembunyikan butiran pelaksanaan struktur kad. Jika anda ingin benar-benar menyembunyikan butiran pelaksanaan, anda boleh menggunakan fungsi kilang untuk mencipta nilai Kad, dan kemudian hanya mengembalikan antara muka Kad kepada pelanggan.

func NewCard(num int) Card {
    newCard := card{
        cardNum: num,
        face:    faces[num%len(faces)],
        suit:    suits[num/len(faces)],
    }

    return &newCard
}
Salin selepas log masuk

Ini akan membolehkan anda mencipta nilai Kad tanpa mendedahkan butiran pelaksanaan struktur kad.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Pelbagai Antara Muka dalam Go untuk Satu Jenis?. 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