pointers - 如何在双链表中获取元素值的指针(go-lang)

标签 pointers go

我想修改一个双链表中元素的值,但是不知道如何获取它的指针,因为元素的值是go-lang自己定义的一个nil接口(interface)。 据我所知,我必须在获取元素的值之前进行类型断言,例如:

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

我个人认为重新分配它最有意义。如果您在函数中执行此操作,则可能需要返回新值。我确信还有其他方法可以改变它,但我认为简单是最好的。

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

关于pointers - 如何在双链表中获取元素值的指针(go-lang),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34915290/

相关文章:

c++ - 将数组动态分配到具有指针参数的函数中

c - 在 C 中,如何将结构中指针数组中的所有元素初始化为 null?

json - 在 golang 中将结构与其 json 逻辑分开?

go - 如何通过分页列出表格中的所有项目

go - 读取子进程的 stdout 和 stderr 的竞争条件

go - 在多个文件中拆分 go 代码时遇到问题

session - gorilla / session 在服务器重启之间持续存在?

c - 是否有一些 "free-able"内存

c - 在 c 中放入数组后打印元素

c - 将指针传递给函数会破坏指针