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