Junior — Middle
Ի՞նչ են Go լեզվում ինտերֆեյսների օգտագործման առավելությունները և թերությունները։
sobes.tech AI
Պատասխան AI-ից
Go-յի ինտերֆեյսները թույլ են տալիս նկարագրել վարքագիծ՝ մեթոդների հավաքով, առանց կոնկրետ իրագործման նշելու:
Առավելություններ:
- Տնտեսականություն: Տիպերը ավտոմատ կերպով իրականացնում են ինտերֆեյսը, եթե ունեն անհրաժեշտ մեթոդները, առանց բացահայտ հայտարարելու:
- Հեշտացնում է թեստավորումը: Լավ է փոխարինել իրագործումները մոկերի համար:
- Հեշտացնում է ճարտարապետությունը: Մատչելի է գրել ավելի աբստրակտ և ընդլայնելի կոդ:
Կամչություններ:
- Անհայտ պայմանագիր: Երբեմն դժվար է հասկանալ, թե որ տիպերը իրականացնում են ինտերֆեյսը, քանի որ դա չի հայտարարվում բացահայտ:
- Կարող է բարդացնել սխալների հայտնաբերում: Անհաջող օգտագործումը կարող է հանգեցնել ժամանակային սխալների:
Օրինակ՝ ինտերֆեյս և իրագործում:
package main
import "fmt"
type Speaker interface {
Speak() string
}
type Dog struct {}
func (d Dog) Speak() string {
return "Woof!"
}
type Cat struct {}
func (c Cat) Speak() string {
return "Meow!"
}
func saySomething(s Speaker) {
fmt.Println(s.Speak())
}
func main() {
dog := Dog{}
cat := Cat{}
saySomething(dog)
saySomething(cat)
}