我想修改双链表中的元素值,但我不知道如何获取它的指针,因为元素的value是一个由go-lang自身定义的无界面。 据我所知道的是,我必须做一个类型断言之前获得更多元素的值:如何获取双向链表中元素值的指针(go-lang)
val, ok := ele.Value.(TYPE)
if ok {
// do something...
}
,但如果我只是修改val
这将是无用的。 那么有什么提示?
谢谢。
我想修改双链表中的元素值,但我不知道如何获取它的指针,因为元素的value是一个由go-lang自身定义的无界面。 据我所知道的是,我必须做一个类型断言之前获得更多元素的值:如何获取双向链表中元素值的指针(go-lang)
val, ok := ele.Value.(TYPE)
if ok {
// do something...
}
,但如果我只是修改val
这将是无用的。 那么有什么提示?
谢谢。
有两个非常简单的选项。他们都将涉及类型的认定,因为你使用interface{}
你可以将它保存为一个指针和类型断言:
var q interface{}
var i int
q = &i
*(q.(*int)) = 5
你可以简单地将其重新分配:
var q interface{}
q = 5
b := q.(int)
q = 2*b
我个人认为重新分配它是最有意义的。如果你正在做一个函数,你可能需要返回新的值。我相信还有其他方法可以改变它,但我认为简单是最好的。
当然在实际工作中一些检查会很好。
周围没有其他办法。您可以存储指针或值。 – JimB
如果您需要一个指针,然后将一个指针存储在列表中。 – JimB