Junior — Middle
Belirli bir sınıfın veya nesnenin belirli bir arayüzü uygulayıp uygulamadığını nasıl belirleyebilirsiniz?
sobes.tech yapay zeka
AI'dan gelen yanıt
Go'da arayüzler örtüsel olarak uygulanır: Bir tür, bir arayüzün tüm yöntemlerini uygularsa, otomatik olarak bu arayüzü uygulayan olarak kabul edilir.
Belirli bir türün arayüzü uygulayıp uygulamadığını kontrol etmek için tür iddiası (type assertion) kullanabilir veya bu türden bir değeri arayüz türündeki bir değişkene atamayı deneyebilirsiniz.
Örnek:
package main
import "fmt"
type Reader interface {
Read(p []byte) (n int, err error)
}
type MyReader struct {}
func (r MyReader) Read(p []byte) (n int, err error) {
return 0, nil
}
func main() {
var r Reader
var mr MyReader
// Atama yoluyla arayüz uygulamasını kontrol et
r = mr // eğer MyReader, Reader'ı uygulamıyorsa, derleme hatası olur
// Tür iddiası kullanarak kontrol
if _, ok := interface{}(mr).(Reader); ok {
fmt.Println("MyReader, Reader arayüzünü uygular")
} else {
fmt.Println("MyReader, Reader arayüzünü uygulamaz")
}
}
Bu şekilde, Go derleyicisi arayüz uyumluluğunu garanti eder ve çalışma zamanında tür iddiası ile kontrol edilebilir.