panic: runtime error: invalid memory address or nil pointer dereference。这里dummy *T是nil,虽然代码并不访问dummy所指向的内容,但是Golang依然不允许这样使用这个指针。 既然Golang不允许使用nil指针,那么我们可以通过创建一个无用的T对象来绕开这个问题,代码如下: func(m *F)T2() *T {vardummy T fieldOffs...
可能相关/相同的:#65192
在上述示例代码中,处理逻辑是将遍历结构体数据切片并修改字段后,存入到结构体指针切片中,在此过程中,变量v的内存地址始终不变,存入的均为临时变量的地址。等循环结束后,由于golang使用的是引用计数算法,因此v并不会被垃圾回收,存入的所有结构体数据均为最后一次遍历的数据。 解决方式: 原切片改用指针类型:...