2016-01-21 70 views
0

我想修改双链表中的元素值,但我不知道如何获取它的指针,因为元素的value是一个由go-lang自身定义的无界面。 据我所知道的是,我必须做一个类型断言之前获得更多元素的值:如何获取双向链表中元素值的指针(go-lang)

val, ok := ele.Value.(TYPE) 
if ok { 
    // do something... 
} 

,但如果我只是修改val这将是无用的。 那么有什么提示?

谢谢。

+0

如果您需要一个指针,然后将一个指针存储在列表中。 – JimB

回答

1

有两个非常简单的选项。他们都将涉及类型的认定,因为你使用interface{}

你可以将它保存为一个指针和类型断言:

var q interface{} 
var i int 
q = &i 
*(q.(*int)) = 5 

你可以简单地将其重新分配:

var q interface{} 
q = 5 
b := q.(int) 
q = 2*b 

我个人认为重新分配它是最有意义的。如果你正在做一个函数,你可能需要返回新的值。我相信还有其他方法可以改变它,但我认为简单是最好的。

当然在实际工作中一些检查会很好。

+0

周围没有其他办法。您可以存储指针或值。 – JimB