Sobes.tech
Junior

Go-da interfeys növünü necə yoxlamaq olar?

sobes.tech Süni İntellekt

AI-dan cavab

Go dilində, interfeys növünü yoxlamaq üçün tez-tez type assertion və ya type switch istifadə olunur.

Əgər sizin var i interface{} kimi interfeys növündə dəyişəniniz varsa və onun müəyyən bir interfeysi tətbiq edib-etmədiyini və ya müəyyən bir növ olub-olmadığını yoxlamaq istəyirsinizsə, bunu belə edə bilərsiniz:

if v, ok := i.(MyInterface); ok {
    // i MyInterface-i tətbiq edir, v çevrilmiş növdür
}

Bir neçə növü yoxlamaq üçün, type switch istifadə etmək əlverişlidir:

switch v := i.(type) {
case MyInterface:
    // i MyInterface-i tətbiq edir
case *MyStruct:
    // i, MyStruct-in göstəricisidir
default:
    // başqa növ
}

Daha dinamik növ yoxlaması etmək istəyirsinizsə, reflect paketindən istifadə edə bilərsiniz:

import "reflect"

t := reflect.TypeOf(i)
if t.Implements(reflect.TypeOf((*MyInterface)(nil)).Elem()) {
    // i MyInterface-i tətbiq edir
}

Beləliklə, sadə hallarda növ assertion və ya növ switch kifayət edir; daha mürəkkəb hallarda reflection istifadə olunur.