Junior
Go'da interfeys turini qanday tekshirish mumkin?
sobes.tech AI
AIdan javob
Go tilida, interfeys turini tekshirish uchun ko'pincha type assertion yoki type switch ishlatiladi.
Agar sizda var i interface{} kabi interfeys turidagi o'zgaruvchi bo'lsa va uning ma'lum bir interfeysni amalga oshirayotgan yoki ma'lum bir turga ega ekanligini tekshirmoqchi bo'lsangiz, quyidagicha qilishingiz mumkin:
if v, ok := i.(MyInterface); ok {
// i MyInterface ni amalga oshiradi, v - konvertatsiya qilingan tur
}
Bir nechta turlarni tekshirish uchun type switch qulay:
switch v := i.(type) {
case MyInterface:
// i MyInterface ni amalga oshiradi
case *MyStruct:
// i MyStruct ning ko'rsatkichidir
default:
// boshqa tur
}
Agar turini dinamikroq tekshirmoqchi bo'lsangiz, reflect paketidan foydalanishingiz mumkin:
import "reflect"
t := reflect.TypeOf(i)
if t.Implements(reflect.TypeOf((*MyInterface)(nil)).Elem()) {
// i MyInterface ni amalga oshiradi
}
Shunday qilib, oddiy holatlar uchun type assertion yoki type switch kifoya qiladi; murakkabroq holatlar uchun reflection ishlatiladi.