Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Menyelam mendalam ke dalam pelaksanaan antara muka Golang

Menyelam mendalam ke dalam pelaksanaan antara muka Golang

PHPz
PHPzasal
2023-03-22 15:21:531432semak imbas

Golang (juga dikenali sebagai bahasa Go) ialah bahasa pengaturcaraan moden yang direka dan diselenggara oleh Google. Golang ialah bahasa statik yang meningkatkan kebolehselenggaraan dan keteguhan kod melalui penaipan yang kuat dan pemeriksaan jenis yang ketat. Salah satu ciri yang paling menarik ialah antara muka, dan artikel ini akan menyelidiki pelaksanaan antara muka Golang.

Apakah itu antara muka Golang?

Seperti bahasa pengaturcaraan berorientasikan objek lain seperti C++ dan Java, Golang juga menyokong antara muka. Dalam Go, antara muka ialah pengisytiharan satu set kaedah dan jenis antara muka ialah koleksi jenis yang mesti melaksanakan kaedah ini. Ringkasnya, antara muka ialah jenis abstrak yang mentakrifkan tandatangan kaedah tetapi bukan pelaksanaan. Antara muka boleh mengandungi 0 atau lebih tandatangan kaedah dan tidak mengandungi sebarang medan.

Antara muka boleh dibandingkan dengan kad Kad menetapkan peraturan penggunaan tertentu, supaya orang yang melaksanakan antara muka kad tahu bahawa dia mesti mematuhi peraturan ini untuk pengekodan, yang menjadikan prestasi dan fleksibiliti kod telah diperbaiki.

Pelaksanaan antara muka

Sangat mudah untuk melaksanakan antara muka dalam Golang jenis A hanya perlu melaksanakan semua kaedah dalam jenis antara muka, dan ia boleh dipanggil jenis pelaksanaan antara muka ini. Proses mentakrif dan melaksanakan antara muka adalah seperti berikut:

type interfaceName interface{
    method1(param1 type1, param2 type2, ...) (return1 type1, return2 type2, ...)
    method2(param1 type1, ...) (return1 type1, ...)
    ...
}

type myType struct {
    // myType 的一些域
}

func (t *myType) method1(param1 type1, param2 type2, ...) (return1 type1, return2 type2, ...) {
    // 方法体
}
func (t *myType) method2(param1 type1, ...) (return1 type1, ...) {
    // 方法体
}
// ...

Dalam kod di atas, kami mentakrifkan antara mukaNama antara muka, yang mengandungi beberapa kaedah. Kemudian kami menentukan struktur myType, yang mempunyai beberapa sifat, dan kemudian kami melaksanakan kaedah dalam interfaceName masing-masing. Dengan cara ini, myType menjadi jenis pelaksanaan interfaceName.

Perlu diingatkan bahawa pelaksanaan antara muka adalah tidak mengganggu, iaitu, kita tidak perlu mengubah suai jenis yang ditentukan, kita hanya perlu menentukan kaedah yang akan dilaksanakan.

Hubungan antara jenis antara muka dan jenis pelaksanaan

Jenis antara muka boleh mewujudkan berbilang jenis pelaksanaan. Dengan kata lain, jenis antara muka boleh dilaksanakan oleh pelbagai jenis. Berikut ialah contoh:

type Animal interface {
    Move() string
}

type Dog struct {}

func (d Dog) Move() string {
    return "I'm a dog, I can walk on 4 legs"
}

type Bird struct {}

func (b Bird) Move() string {
    return "I'm a bird, I can fly"
}

func main() {
    d := new(Dog)
    b := new(Bird)
    animal1 := Animal(d)
    animal2 := Animal(b)
    fmt.Println(animal1.Move())
    fmt.Println(animal2.Move())
}

Dalam contoh di atas, kami menentukan antara muka Haiwan dan dua jenis pelaksanaan: Anjing dan Burung. Kemudian kami mencipta objek animal1 dan animal2, jenisnya adalah kedua-dua Haiwan, tetapi jenis sebenar yang mereka tunjuk ialah Anjing dan Burung. Akhir sekali, dalam fungsi utama, kaedah Move() animal1 dan animal2 dipanggil masing-masing, dan mod pergerakan mereka dikeluarkan mengikut kelakuan jenis sebenar.

Kita dapat melihat bahawa kaedah Move() jenis sebenar melaksanakan kaedah Move() jenis antara muka Selagi jenis melaksanakan antara muka, ia boleh dipanggil jenis pelaksanaan.

Antara muka kosong

Antara muka kosong {} di Golang ialah antara muka khas yang tidak mempunyai sebarang kaedah dan boleh mewakili sebarang jenis, yang setara dengan dalam java Kelas objek. Boleh digunakan untuk mentakrifkan parameter atau mengembalikan nilai apa-apa jenis, seperti:

func foo(a interface{}) {
    switch a.(type){
    case string:
        fmt.Println("this is string type")
    case int:
        fmt.Println("this is int type")
    default:
        fmt.Println("unknown type")
    }
}

func main() {
    foo("hello")
    foo(42)
    foo(3.14159)
}

Dalam contoh di atas, kami menentukan fungsi foo yang parameternya ialah jenis antara muka kosong a. Kami menggunakan pernyataan suis untuk menentukan jenis sebenar a dan bertindak balas dengan sewajarnya. Seperti yang anda lihat, antara muka kosong boleh menerima sebarang jenis parameter.

Ringkasan

Pelaksanaan antara muka Golang adalah perkara yang sangat mudah. Selagi jenis melaksanakan semua kaedah dalam jenis antara muka, ia dipanggil jenis pelaksanaan jenis antara muka ini. Jenis antara muka boleh mempunyai pelbagai jenis pelaksanaan. Antara muka kosong ialah antara muka khas yang tidak mempunyai sebarang kaedah dan boleh mewakili sebarang jenis. Di samping itu, antara muka tidak mengganggu, yang sangat meningkatkan fleksibiliti dan kebolehbacaan kod penulisan.

Atas ialah kandungan terperinci Menyelam mendalam ke dalam pelaksanaan antara muka Golang. 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