Contoh Antara Muka Golang

Contoh Antara Muka Golang



Dalam Go, satu set tandatangan kaedah terdiri daripada antara muka. Ia menentukan sekumpulan tindakan yang mesti diambil oleh jenis untuk ditentukan untuk memenuhi antara muka tersebut. Dalam erti kata lain, antara muka menentukan kaedah yang mesti ada pada jenis tetapi tidak memberikan maklumat pelaksanaan. Walaupun, antara muka Go menyediakan mekanisme yang berkuasa untuk mencapai tingkah laku polimorfik dan menulis kod yang boleh digunakan semula. Dalam siaran ini, kami akan mengkaji idea antara muka dalam Go dan menawarkan contoh dunia sebenar untuk menunjukkan cara menggunakannya.

Contoh 1: Antara Muka Kosong Golang

Mulakan dengan antara muka kosong{} yang dirujuk sebagai antara muka dalam Go. Ia menunjukkan jenis yang boleh menyimpan apa-apa jenis nilai. Berikut ialah kod sumber untuk antara muka kosong dalam Go:

pakej utama
import 'fmt'
menaip MarkahKalkulator antara muka {}
fungsi utama () {
adalah m MarkahKalkulator
fmt . Println ( m )
}

Di sini, kami menyediakan kod yang mana antara muka 'MarksCalculator' tidak mempunyai sebarang tandatangan kaedah yang ditentukan kerana ia kosong. Akibatnya, ia tidak menyediakan sebarang fungsi. Seterusnya, kita mempunyai fungsi main() antara muka kosong ini di mana pembolehubah 'm' jenis MarksCalculator diisytiharkan. Memandangkan antara muka kosong, 'm' boleh menyimpan sebarang nilai dari sebarang jenis. Dalam kes ini, 'm' tidak dimulakan, jadi ia mempunyai nilai sifar untuk jenisnya iaitu 'nihil' untuk antara muka. Apabila 'm' dicetak menggunakan 'fmt.Println' ia mengeluarkan 'nil' ke konsol.







Output yang diambil adalah 'tiada' seperti yang dijangkakan daripada kod sumber sebelumnya:





Contoh 2:  Pelaksanaan Antara Muka Golang

Bahagian ini menunjukkan pelaksanaan antara muka Golang. Satu jenis mesti menawarkan pelaksanaan untuk setiap kaedah yang ditentukan dalam antara muka untuk melaksanakannya dalam Go. Berikut ialah kod sumber yang diberikan untuk pelaksanaan antara muka:





pakej utama
import (
'fmt'
)
menaip Vokal antara muka {
CariVowel () [] rune
}
menaip MyStr tali
fungsi ( st MyStr ) CariVowel () [] rune {
adalah huruf vokal [] rune
untuk _ , rune := julat st {
jika rune == 'a' || rune == 'Ia adalah' || rune == 'saya' || rune == 'O' || rune == 'dalam' {
huruf vokal = tambahkan ( huruf vokal , rune )
}
}
kembali huruf vokal
}

fungsi utama () {
NewString := MyStr ( 'Antara Muka GoLang' )
adalah v1 Vokal
v1 = NewString
fmt . Cetakanf ( 'Vokal ialah %c' , v1 . CariVowel ())
}

Di sini, kod mentakrifkan antara muka bernama 'Vowel' yang menentukan kaedah tunggal SearchVowels() yang mengembalikan sepotong rune(type int32). Antara muka membolehkan sebarang jenis yang melaksanakan tandatangan kaedah ini diberikan kepada pembolehubah jenis antara muka. Kemudian, jenis 'MyStr' baharu diisytiharkan yang merupakan alias untuk rentetan jenis asas. Ini bermakna 'MyStr' mewarisi semua kaedah rentetan tetapi merupakan jenis yang berbeza.

Selepas itu, kami melaksanakan kaedah SearchVowels() untuk jenis 'MyStr'. Kaedah ini mengimbas aksara rentetan input mengikut aksara dan menyemak sama ada setiap aksara ialah vokal (“a”, “e”, “i”, “o”, atau “u”). Jika aksara ialah vokal, ia dilampirkan pada hirisan vokal.



Di dalam fungsi main(), pembolehubah 'NewString' jenis 'MyStr' dicipta dengan nilai 'Antara Muka GoLang'. Seterusnya, pembolehubah 'v1' jenis 'Vokal' diisytiharkan. Memandangkan 'MyStr' melaksanakan kaedah SearchVowels() yang ditakrifkan dalam antara muka 'Vowel', 'NewString' boleh diberikan kepada 'v1'.

Output memaparkan semua susunan vokal yang terdapat dalam rentetan yang ditentukan:

Contoh 3: Antara Muka Stringer Golang

Selain itu, Golang mempunyai antara muka 'Stringer' yang dipratentukan dalam pakej 'fmt'. Ia membenarkan jenis tersuai untuk mengawal perwakilan rentetannya apabila diformatkan dengan kata kerja '%v' dalam fungsi pencetakan pakej 'fmt'. Berikut ialah contoh kod untuk antara muka rentetan Go:

pakej utama
import (
'fmt'
)
menaip Pelajar struct {
Nama tali
Ijazah tali
}
fungsi ( s Pelajar ) Tali () tali {
kembali fmt . Sprintf ( '%s ialah a(n) %s' , s . Nama , s . Ijazah )
}
fungsi utama () {
s1 := Pelajar { 'Elena Gilbert' , 'Sains Komputer' }
s2 := Pelajar { 'Caroline Candice' , 'BBA' }
fmt . Println ( s1 )
fmt . Println ( s2 )
}

Di sini, kod pertama mengimport pakej yang diperlukan iaitu 'fmt' untuk mencetak ke konsol. Kemudian, kami mentakrifkan jenis struct 'Pelajar' dengan dua medan: 'Nama' dan 'Ijazah'. Struktur ini mewakili maklumat pelajar. Selanjutnya, kaedah String() untuk jenis 'Pelajar' dicipta. Kaedah ini mempunyai penerima jenis 'Pelajar' dan mengembalikan rentetan. Kaedah 'String()' ialah kaedah khas dalam Go yang digunakan untuk menyesuaikan perwakilan rentetan objek apabila ia dicetak. Dalam kes ini, kaedah 'String()' memformat dan mengembalikan rentetan yang merangkumi nama dan ijazah pelajar.

Seterusnya, kita mempunyai fungsi main() di mana dua pembolehubah, s1 dan s2 jenis 'Pelajar', diisytiharkan dan dimulakan dengan maklumat pelajar. Akhir sekali, kod menggunakan fungsi fmt.Println() untuk mencetak nilai s1 dan s2. Memandangkan kaedah String() ditakrifkan untuk jenis 'Pelajar', Go secara automatik memanggil kaedah ini apabila mencetak objek 'Pelajar'. Kaedah String() memformatkan maklumat pelajar menggunakan fungsi 'fmt.Sprintf()' dan mengembalikan rentetan yang diformatkan.

Output berikut mencetak objek jenis 'Pelajar' antara muka rentetan:

Contoh 4: Antara Muka Suis Jenis Golang

Kemudian muncul antara muka suis jenis Go. Suis jenis ialah struktur kawalan yang membolehkan kita memeriksa jenis dinamik nilai antara muka. Ikut kod sumber antara muka suis jenis:

pakej utama
import 'fmt
func MyFunction(antara muka F1{}) {
suis F1.(jenis) {
int kes:
fmt.Println('
taip : int , Nilai : ', F1.(anda))
rentetan kes:
fmt.Println('
\nTaip : tali , Nilai : ', F1.(rentetan))
kes float64:
fmt.Println('
\nTaip : terapung64 , Nilai : ', F1.(float64))
lalai:
fmt.Println('
\nJenis tidak sah ')
}
}
func main() {
MyFunction('
Tutorial Antara Muka Golang ')
MyFunction(89.7)
MyFunction(benar)
}

Di sini, kod yang disediakan mentakrifkan fungsi 'MyFunction' yang mengambil parameter 'F1' jenis 'antara muka{}'. Ini menunjukkan bahawa 'F1' boleh menerima nilai apa-apa jenis. Di dalam fungsi, pernyataan suis digunakan dengan 'F1.(type)' untuk menyemak jenis nilai yang dihantar kepada 'MyFunction'. Sintaks “.(type)” digunakan dalam suis jenis untuk mendapatkan jenis dinamik asas nilai antara muka. Ambil perhatian bahawa kes suis di sini mengendalikan tiga jenis khusus: 'int', 'rentetan' dan 'float64'. Jika jenis 'F1' sepadan dengan salah satu kes ini. Ia mencetak jenis dan nilai yang sepadan menggunakan penegasan jenis (F1.(int), F1.(rentetan), F1.(float64)). Jika jenis 'F1' tidak sepadan dengan mana-mana kes yang ditentukan, kes lalai akan dilaksanakan yang mencetak 'Jenis tidak sah'.

Selepas itu, dalam fungsi main(), 'MyFunction' dipanggil tiga kali dengan nilai yang berbeza: rentetan, float64 dan Boolean (yang tidak dikendalikan dalam pernyataan suis).

Output memaparkan demonstrasi antara muka suis dengan penegasan jenis:

Contoh 5: Antara Muka Pelbagai Golang

Selain itu, Go menawarkan berbilang antara muka yang membolehkannya menyediakan set tingkah laku yang berbeza bergantung pada konteks. Ciri ini dipanggil 'antara muka berbilang' atau 'komposisi antara muka'. Kod berikut menunjukkan pelaksanaan berbilang antara muka:

pakej utama
import 'fmt'
taip burung antara muka {
bernafas ()
terbang ()
}

taip burung antara muka {
suapan ()
}
taip di mana struct {
umur int
}
fungsi ( d mana ) bernafas () {
fmt . Println ( 'Merpati bernafas' )
}
fungsi ( d mana ) terbang () {
fmt . Println ( 'merpati terbang' )
}
fungsi ( d mana ) suapan () {
fmt . Println ( 'merpati memelihara bayi' )
}
fungsi utama () {
adalah b burung
d := di mana {}
b = d
b . bernafas ()
b . terbang ()
adalah seekor burung
a = d
a . suapan ()
}

Di sini, kami mentakrifkan dua antara muka: 'burung' dan 'burung'. Antara muka 'burung' mengisytiharkan dua kaedah: breathe() dan fly(). Manakala antara muka 'avians' mengisytiharkan kaedah suapan(). Kemudian, struktur 'merpati' melaksanakan semua kaedah antara muka 'burung' dan 'burung'. Ia menyediakan pelaksanaan untuk breathe(), fly(), dan feed().

Seterusnya, kami mengisytiharkan pembolehubah 'b' jenis 'burung' dalam fungsi utama(). Contoh 'merpati' dicipta dan diberikan kepada 'b' menggunakan tugasan b = d. Memandangkan 'merpati' melaksanakan semua kaedah antara muka 'burung', tugasan ini adalah sah.

Kemudian, kaedah breathe() dan fly() dipanggil pada 'b' yang merupakan jenis 'burung'. Begitu juga, pembolehubah 'a' jenis 'avians' diisytiharkan dan diberikan dengan contoh 'merpati' 'd'. Memandangkan 'merpati' melaksanakan kaedah suapan() yang ditakrifkan dalam antara muka 'burung', tugasan ini juga sah. Kaedah suapan() dipanggil pada 'a' yang merupakan jenis 'avians'. Oleh kerana 'a' memegang contoh 'merpati', kaedah suapan() yang dilaksanakan oleh 'merpati' dilaksanakan.

Output menunjukkan bahawa kaedah antara muka dilaksanakan dengan betul:

Kesimpulan

Kami mempelajari asas antara muka Go dan menyediakan contoh praktikal untuk menggambarkan penggunaannya. Dengan mentakrifkan antara muka dan melaksanakannya dengan jenis yang berbeza, kami boleh mencipta program yang fleksibel dan boleh dikembangkan.