Golang - 通过接口获取指向结构字段的指针

我还处于理解 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 方法,但无法在那里设置指针......提前致谢。


三国纷争
浏览 228回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go