Junior
Go'da arayüz türü nasıl kontrol edilir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Go dilinde, arayüzün türünü kontrol etmek için sıkça type assertion veya type switch kullanılır.
Eğer var i interface{} gibi bir arayüz türünde değişkeniniz varsa ve bunun belirli bir arayüzü uygulayıp uygulamadığını veya belirli bir türe sahip olup olmadığını kontrol etmek istiyorsanız, şu şekilde yapabilirsiniz:
if v, ok := i.(MyInterface); ok {
// i MyInterface'i uygular, v dönüştürülmüş türdür
}
Birden fazla türü kontrol etmek için type switch kullanmak uygundur:
switch v := i.(type) {
case MyInterface:
// i MyInterface'i uygular
case *MyStruct:
// i, MyStruct'in işaretçisidir
default:
// başka bir tür
}
Daha dinamik tür kontrolü yapmak isterseniz, reflect paketini kullanabilirsiniz:
import "reflect"
t := reflect.TypeOf(i)
if t.Implements(reflect.TypeOf((*MyInterface)(nil)).Elem()) {
// i MyInterface'i uygular
}
Bu şekilde, basit durumlar için type assertion veya type switch yeterlidir; daha karmaşık durumlar için reflection kullanılır.