我还处于理解 Go 接口的早期阶段。我正在编写一些逻辑模拟,并具有类似以下代码的内容(我在这里进行了大量简化):请参阅我的问题的评论:type LogicNode struct { Input *bool Output *bool Operator string Next Node}func (n *LogicNode) Run() { // do some stuff here n.Next.Run()}type Node interface { Run()}func main() { nodes := make([]Node, 1000) for i := 0; i < 1000; i++ { n := LogicNode{ //assign values etc. } nodes[i] = &n } for i, node := range nodes { // I need to access LogicNode's Output pointer here, as a *bool. // so I can set the same address to other Node's Input thereby "connecting" them. // but I could only get something like this: x := reflect.ValueOf(node).Elem().FieldByName("Output") // which is <*bool Value> // I couldn't find a way to set a new *bool to the underlying (LogicNode) Struct's Input or Output.. }}我使用接口的原因是因为还有其他节点类型 FloatNode MathNode 等,它们具有不同的字段,但它们实现了自己的 run 方法。我已经成功地使用了 Value 的 SetString 或 SetBool 方法,但无法在那里设置指针......提前致谢。
1 回答
- 1 回答
- 0 关注
- 227 浏览
添加回答
举报
0/150
提交
取消