Sobes.tech
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.