Junior — Middle
Go тилиндеги интерфейс кандай айырмаланат жана анын кандай өзгөчөлүктөрүн билүү керек?
sobes.tech AI
AIден жооп
Go тилинде интерфейс — бул белгилүү бир тип аткаруусу керек болгон методдордун жыйындысы, ал ошол интерфейске ылайык деп эсептелет. Go тилиндеги интерфейстердин өзгөчөлүктөрү:
- Жасалма ишке ашыруу: бир түр, эгер ал бардык методдорду камтыса, аны ачык көрсөтүүнүн кажети жок, интерфейсти ишке ашырган деп эсептелет.
- Интерфейстер маалымат түзүмдөрүн эмес, жүрүм-турумду сүрөттөйт.
- Бош интерфейс (
interface{}) — методсуз интерфейс, ал ар кандай түрдүн маанисин камтышы мүмкүн. - Интерфейстер ички интерфейстер менен биригип, бир нече интерфейстин методдорун бириктире алат.
Мисал:
package main
import "fmt"
type Reader interface {
Read(p []byte) (n int, err error)
}
type MyReader struct {}
func (r MyReader) Read(p []byte) (n int, err error) {
// окуу ишке ашыруу
return 0, nil
}
func main() {
var r Reader = MyReader{} // MyReader, Reader'ды косумчо ишке ашырат
fmt.Println(r)
}