Golang (juga dikenali sebagai Go) ialah bahasa pengaturcaraan serentak berprestasi tinggi yang ringkas, berkuasa dan selamat. Berbanding dengan bahasa lain, Golang mempunyai kelebihan yang tinggi dalam mengendalikan tugas intensif I/O, tugas berkonkurensi tinggi dan pengaturcaraan rangkaian. Antaranya, antara muka adalah ciri yang sangat penting dalam Golang Bagi pemula, memahami antara muka mungkin salah satu perkara yang mencabar. Dalam artikel ini, kami akan meneroka asas dan konsep penting antara muka Golang.
Pertama, mari semak definisi antara muka. Di Golang, antara muka ialah jenis yang tidak terikat pada jenis data tertentu seperti bahasa lain, tetapi mengabstrak beberapa set kaedah biasa. Kaedah ini boleh digunakan untuk menerangkan satu set gelagat yang serupa tanpa mengira jenis data tertentu. Ini menjadikan antara muka sangat fleksibel dan mudah untuk dikembangkan dan diselenggara.
Mari kita lihat contoh praktikal. Katakan kita mempunyai antara muka yang mewakili bentuk, yang mengandungi dua kaedah untuk mengira luas dan perimeter:
taip Antara muka bentuk {
Area() float64 Perimeter() float64
}
Sekarang, kita boleh Laksanakan antara muka ini untuk jenis grafik yang berbeza. Sebagai contoh, kod pelaksanaan bulatan boleh menjadi:
taip Circle struct {
Radius float64
}
func (c Circle) Area() float64 {
return math.Pi * c.Radius * c.Radius
}
func (c Bulatan) Perimeter() float64 {
return 2 * math.Pi * c.Radius
}
Di sini kita takrifkan bulatan, yang mempunyai jejari atribut Jejari. Kaedah Luas mengembalikan luas bulatan, manakala kaedah Perimeter mengembalikan lilitan bulatan. Kedua-dua kaedah ini mesti dilaksanakan pada jenis Bulatan masing-masing untuk memenuhi keperluan antara muka Bentuk. Begitu juga, jika kita mempunyai pelaksanaan jenis segi empat tepat, kita juga boleh melaksanakan antara muka ini adalah seperti berikut:
jenis Rectangle struct {
Width float64 Height float64
}
func. (r Segiempat) Luas () float64 {
return r.Width * r.Height
}
func (r Rectangle) Perimeter() float64 {
return 2 * (r.Width + r.Height)
}
Seboleh-bolehnya lihat, jenis segi empat tepat ini juga Dua kaedah dilaksanakan mengikut keperluan antara muka Bentuk. Kini kita boleh mentakrifkan Slice yang mengandungi bentuk yang berbeza, dan kemudian melintasi Slice ini untuk mengira luas dan perimeternya:
func TotalArea(shapes []Shape) float64 {
var area float64 for _, shape := range shapes { area += shape.Area() } return area
}
func TotalPerimeter(shapes []Shape) float64 {
rreee}
Dengan cara ini, kita boleh mengira jenis grafik yang berbeza tanpa mengetahui jenis khusus mereka. Ini adalah kes penggunaan yang sangat berguna untuk antara muka.
Walau bagaimanapun, untuk pemula, antara muka juga mungkin menambahkan sedikit kesukaran. Pertama, antara muka itu sendiri tidak mempunyai jenis data sebenar, ia hanya menerangkan satu set kaedah. Oleh itu, kami tidak boleh terus menggunakan pembolehubah jenis antara muka untuk tugasan atau operasi perbandingan, dan mesti menukarnya kepada jenis tertentu. Sebagai contoh, kami mentakrifkan pembolehubah jenis antara muka var s Shape dan kami mesti menukarnya kepada jenis tertentu untuk memanggil kaedahnya:
c := Circle{Radius: 2}
var s Shape = c
// Sintaks berikut menukar s kepada jenis Bulatan dan memanggil kaedah Kawasan
kawasan := s.(Bulatan).Kawasan()
Semasa penukaran, jika jenis s sebenar bukan Jenis bulatan , maka pengecualian panik akan dilemparkan. Oleh itu, kita mesti memastikan bahawa penukaran jenis pembolehubah antara muka adalah selamat.
Selain itu, jenis antara muka dalam Golang tidak menyokong generik. Ini bermakna kami tidak boleh menerima sebarang jenis data secara langsung melalui jenis antara muka. Kami perlu mentakrifkan jenis antara muka tertentu mengikut definisi antara muka. Ini mungkin menyusahkan untuk senario di mana generik sering digunakan dalam bahasa lain.
Ringkasnya, antara muka dalam Golang ialah bahagian penting dalam model pengaturcaraannya. Dengan mentakrifkan satu set kaedah biasa, anda boleh menyediakan antara muka yang konsisten untuk jenis yang berbeza, dengan itu meningkatkan fleksibiliti dan kebolehselenggaraan program. Walau bagaimanapun, pemula mungkin menghadapi beberapa cabaran dalam memahami konsep antara muka dan menggunakan pembolehubah jenis antara muka, dan ia akan mengambil sedikit masa untuk menguasainya.
Atas ialah kandungan terperinci Antara muka golang tidak dapat difahami. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!