gpt4 book ai didi

go - 回溯到更专业的界面

转载 作者:IT老高 更新时间:2023-10-28 12:58:02 26 4
gpt4 key购买 nike

我正在编写一个围棋游戏。在 C++ 中,我会将所有实体类存储在 BaseEntity 类的数组中。如果一个实体需要在世界上移动,它会是一个从 BaseEntity 派生的 PhysEntity,但具有附加的方法。我试图模仿这是go:

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())
}

这将无法编译,因为它无法判断 'entity' 是一个 PhysEntity。这种方法有什么合适的替代方法?

最佳答案

使用 type assertion .例如,

original, ok := entity.(PhysEntity)
if ok {
println(original.b())
}

关于go - 回溯到更专业的界面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4799905/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com