我想在双链表中修改元素的值,但我不知道如何获取它的指针,因为元素的值是由go定义的nil接口。郎本身。 据我所知,我必须在获取元素值之前做一个类型断言:
val, ok := ele.Value.(TYPE)
if ok {
// do something...
}
但如果我只是修改val
,那将毫无用处。
那有什么提示吗?
感谢。
答案 0 :(得分:1)
有两个很直接的选择。他们都会涉及类型断言,因为你正在使用interface{}
您可以将其存储为指针并输入assert:
var q interface{}
var i int
q = &i
*(q.(*int)) = 5
您可以简单地重新分配它:
var q interface{}
q = 5
b := q.(int)
q = 2*b
我个人认为重新分配它是最有意义的。如果您在函数中执行此操作,则可能需要返回新值。我确信还有其他方法可以改变它,但我认为简单是最好的。
当然,在实际工作中,一些检查会很好。