Junior — Middle
Ի՞նչ տարբերություն կա Golang-ի ինտերֆեյսների և այլ ծրագրավորման լեզուների ինտերֆեյսների միջև։
sobes.tech AI
Պատասխան AI-ից
Go լեզվում ինտերֆեյսները իրականացվում են անուղղակի իրականացման սկզբունքով: Սա նշանակում է, որ մի տեսակ ավտոմատ կերպով իրականացնում է ինտերֆեյսը, եթե ունի բոլոր մեթոդները, որոնք ինտերֆեյսը պահանջում է, առանց դրա հստակ նշելու կոդում (վերած Java կամ C#, որտեղ անհրաժեշտ է հստակ հայտարարել ինտերֆեյսի իրականացման մասին):
Սա թույլ է տալիս գրել ավելի ճկուն և քիչ կապված կոդ, քանի որ տեսակները և ինտերֆեյսները չեն կախված միմյանցից ուղղակիորեն:
Օրինակ՝
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{} // անուղղակի ինտերֆեյսի իրականացում
fmt.Println(r)
}
Նույնպես, Go-ում դասերի ժառանգություն չկա, ինտերֆեյսները օգտագործվում են պոլիմորֆիզմի և կոմպոզիցիայի համար, ինչը նրանց տարբերակում է շատ այլ լեզուներից: