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.