Sobes.tech
Junior — Middle

როგორ დავანახოთ კომპილატორს, რომ კონკრეტული კლასი კონკრეტულ ინტერფეისს ახორციელებს?

sobes.tech AI

პასუხი AI-სგან

Go тилиндеги интерфейсдин ишке ашырылышы жасалма түрдө болот: эгер бир түр интерфейсинин бардык ыкмаларын ишке ашырса, ал автоматтык түрдө ошол интерфейсти ишке ашыруу катары саналат. Бул ачык көрсөтүүнү талап кылбайт.

Мисал:

package main

import "fmt"

type Speaker interface {
    Speak() string
}

type Dog struct {}

func (d Dog) Speak() string {
    return "Гав!"
}

func main() {
    var s Speaker
    d := Dog{}
    s = d // Dog, Speaker интерфейсин ишке ашырат
    fmt.Println(s.Speak())
}

Эгер түрдүн интерфейсин ишке ашырганын так текшергиси келсе, компиляция текшерүүсүн колдонсо болот:

var _ Speaker = (*Dog)(nil) // Компилятор, *Dog, Speaker ишке ашырганын текшерет

Мындайча айтканда, Go тилинде интерфейстер автоматтык түрдө ишке ашырылат, эгер керектүү ыкмалар бар болсо.