Rumah pembangunan bahagian belakang Golang Cara melaksanakan antara muka dalam bahasa Go

Cara melaksanakan antara muka dalam bahasa Go

Apr 05, 2023 pm 01:47 PM

Bahasa Go (juga dipanggil Golang) ialah bahasa pengaturcaraan sumber terbuka yang dibangunkan oleh Google Ia mempunyai ciri kecekapan, kebolehpercayaan dan kesederhanaan. Ciri penting bahasa Go ialah "antara muka". Antara muka ialah koleksi tandatangan kaedah dan merupakan jenis abstrak. Artikel ini akan memperkenalkan cara melaksanakan antara muka dalam bahasa Go.

1. Definisi antara muka

Dalam bahasa Go, definisi antara muka menggunakan kata kunci "antara muka", dan format sintaks adalah seperti berikut:

type 接口名 interface{
    方法名1(参数列表1) 返回值列表1
    方法名2(参数列表2) 返回值列表2
    ……
}
Salin selepas log masuk

Antara mereka, nama antara muka dan kaedah Penamaan mengikut konvensyen penamaan bahasa Go. Nama kaedah dinamakan dalam kes unta Huruf pertama nama kaedah ditulis dengan huruf besar untuk menunjukkan bahawa ia boleh dilihat oleh dunia luar. Dalam antara muka, nama kaedah, bersama senarai parameter dan senarai nilai pulangan, dipanggil "tandatangan kaedah".

2. Pelaksanaan antara muka

Pelaksanaan antara muka merujuk kepada blok kod kaedah yang melaksanakan antara muka berdasarkan tandatangan kaedah yang ditakrifkan oleh antara muka. Kaedah yang melaksanakan antara muka memerlukan tandatangan kaedah yang memenuhi keperluan antara muka Kaedah ini dipanggil "kaedah antara muka."

Pelaksanaan antara muka memerlukan penggunaan mekanisme penukaran jenis unik bahasa Go. Khususnya, pelaksanaan antara muka perlu menukar jenis pelaksanaan (jenis yang melaksanakan kaedah antara muka) kepada jenis antara muka (jenis yang melaksanakan antara muka) dengan melaksanakan "kaedah antara muka". Dalam penukaran jenis, jenis pelaksanaan perlu melaksanakan semua tandatangan kaedah yang ditakrifkan oleh antara muka mana-mana antara muka boleh melaksanakan antara muka selagi semua kaedah dilaksanakan.

Sebagai contoh, kami mentakrifkan antara muka "haiwan" dan dua struktur "anjing" dan "kucing", dan melaksanakan "kaedah antara muka" yang sepadan dengan dua struktur ini. Kodnya adalah seperti berikut:

type Animal interface {
    Speak() string
}

type Dog struct {
}

func (d Dog) Speak() string {
    return "汪汪汪"
}

type Cat struct {
}

func (c Cat) Speak() string {
    return "喵喵喵"
}

func main() {
    var animal Animal //定义一个Animal类型变量
    animal = Dog{}     //将Dog类型的结构体转换为Animal类型的接口实现
    fmt.Println(animal.Speak())

    animal = Cat{}     //将Cat类型的结构体转换为Animal类型的接口实现
    fmt.Println(animal.Speak())
}
Salin selepas log masuk

Dalam kod di atas, kami mentakrifkan antara muka "Haiwan", yang mengandungi kaedah antara muka "Cakap" pada masa yang sama, kami mentakrifkan dua jenis, iaitu "Anjing " dan " Cat" dan laksanakan kaedah antara muka "Speak" yang sepadan. Dalam fungsi utama, kami melaksanakan panggilan kaedah "Cakap" dengan menukar pembolehubah jenis "Anjing" dan "Kucing" ke dalam pelaksanaan antara muka jenis "Haiwan".

3. Pelaksanaan berbilang antara muka

Dalam bahasa Go, struktur boleh melaksanakan berbilang antara muka dan antara muka boleh dilaksanakan oleh berbilang struktur pada masa yang sama. Dalam kes ini, kita perlu menggunakan gabungan untuk melaksanakan berbilang antara muka.

Sebagai contoh, kami mentakrifkan antara muka "haiwan" dan antara muka "haiwan peliharaan", dan kami melaksanakan antara muka "haiwan" dan "haiwan peliharaan" dalam struktur "anjing" masing-masing. Kod tersebut adalah seperti berikut:

type Animal interface {
    Speak() string
}

type Pet interface {
    Name() string
}

type Dog struct {
    name string
}

func (d Dog) Speak() string {
    return "汪汪汪"
}

func (d Dog) Name() string {
    return d.name
}

func main() {
    var animal Animal //定义一个Animal类型变量
    animal = Dog{name: "小明"} //将Dog类型的结构体转换为Animal类型的接口实现
    fmt.Println(animal.Speak())

    var pet Pet       //定义一个Pet类型变量
    pet = Dog{name: "小花"}   //将Dog类型的结构体转换为Pet类型的接口实现
    fmt.Println(pet.Name())
}
Salin selepas log masuk

Dalam kod di atas, kami mentakrifkan antara muka "haiwan" dan antara muka "haiwan peliharaan", dan melaksanakan kaedah antara muka yang sepadan bagi struktur "anjing". Dalam fungsi utama, kami menukar struktur "anjing" masing-masing ke dalam pelaksanaan antara muka "haiwan" dan pelaksanaan antara muka "haiwan peliharaan", dengan itu merealisasikan panggilan kaedah "Cakap" dan "Nama".

4. Ringkasan

Antara muka dalam bahasa Go ialah ciri penting, yang boleh merealisasikan polimorfisme dan membantu kami merealisasikan idea pengaturcaraan berorientasikan antara muka. Dalam bahasa Go, takrifan dan pelaksanaan antara muka adalah sangat mudah, tetapi anda perlu menguasai mekanisme penukaran jenis bahasa Go. Artikel ini memperkenalkan secara ringkas antara muka dan pelaksanaan antara muka dalam bahasa Go dan menerangkan situasi berbilang antara muka melalui contoh.

Atas ialah kandungan terperinci Cara melaksanakan antara muka dalam bahasa Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

GO Language Pack Import: Apakah perbezaan antara garis bawah dan tanpa garis bawah? GO Language Pack Import: Apakah perbezaan antara garis bawah dan tanpa garis bawah? Mar 03, 2025 pm 05:17 PM

GO Language Pack Import: Apakah perbezaan antara garis bawah dan tanpa garis bawah?

Bagaimana untuk melaksanakan pemindahan maklumat jangka pendek antara halaman dalam kerangka beego? Bagaimana untuk melaksanakan pemindahan maklumat jangka pendek antara halaman dalam kerangka beego? Mar 03, 2025 pm 05:22 PM

Bagaimana untuk melaksanakan pemindahan maklumat jangka pendek antara halaman dalam kerangka beego?

Bagaimana cara menukar senarai hasil pertanyaan mysql ke dalam slice struktur tersuai dalam bahasa Go? Bagaimana cara menukar senarai hasil pertanyaan mysql ke dalam slice struktur tersuai dalam bahasa Go? Mar 03, 2025 pm 05:18 PM

Bagaimana cara menukar senarai hasil pertanyaan mysql ke dalam slice struktur tersuai dalam bahasa Go?

Bagaimana saya menulis objek dan stub untuk ujian di GO? Bagaimana saya menulis objek dan stub untuk ujian di GO? Mar 10, 2025 pm 05:38 PM

Bagaimana saya menulis objek dan stub untuk ujian di GO?

Bagaimana saya boleh menentukan kekangan jenis tersuai untuk generik di GO? Bagaimana saya boleh menentukan kekangan jenis tersuai untuk generik di GO? Mar 10, 2025 pm 03:20 PM

Bagaimana saya boleh menentukan kekangan jenis tersuai untuk generik di GO?

Bagaimana saya boleh menggunakan alat pengesanan untuk memahami aliran pelaksanaan aplikasi saya? Bagaimana saya boleh menggunakan alat pengesanan untuk memahami aliran pelaksanaan aplikasi saya? Mar 10, 2025 pm 05:36 PM

Bagaimana saya boleh menggunakan alat pengesanan untuk memahami aliran pelaksanaan aplikasi saya?

Bagaimana anda menulis ujian unit di GO? Bagaimana anda menulis ujian unit di GO? Mar 21, 2025 pm 06:34 PM

Bagaimana anda menulis ujian unit di GO?

Bagaimana cara menulis fail dalam bahasa Go dengan mudah? Bagaimana cara menulis fail dalam bahasa Go dengan mudah? Mar 03, 2025 pm 05:15 PM

Bagaimana cara menulis fail dalam bahasa Go dengan mudah?

See all articles