Oyunda bir yazı yazıyorum. C++ 'da bütün varlık sınıflarım bir BaseEntity sınıfı dizisinde saklardım. Eğer bir varlık, dünyada hareket etmek için gerekliyse, bir BaseEntity'den elde edilen bir Fiziksel, ama eklenmiş yöntemler olacaktır. o varlık "bir PhysEntity olduğunu söyleyemem gibi bu derlenmeyecektirDaha fazla özel arayüze geri dönün
package main
type Entity interface {
a() string
}
type PhysEntity interface {
Entity
b() string
}
type BaseEntity struct { }
func (e *BaseEntity) a() string { return "Hello " }
type BasePhysEntity struct { BaseEntity }
func (e *BasePhysEntity) b() string { return " World!" }
func main() {
physEnt := PhysEntity(new(BasePhysEntity))
entity := Entity(physEnt)
print(entity.a())
original := PhysEntity(entity)
// ERROR on line above: cannot convert physEnt (type PhysEntity) to type Entity:
println(original.b())
}
: Bunu taklit etmeye çalıştı gitmektir. Bu yönteme uygun alternatif nedir?
Türü onaylamaların kullanımı pahalı olup olmadığını biliyor musunuz? BaseEntity'de bir değişkenin türünü takip etmeme değecek mi? –
tip iddiaları ucuzdur. – rog
Bunu denediğimde, bir hata alıyorum: "geçersiz tür onaylama .. (arabirim dışı .. .. solda)" – Zac