我收到以下错误:
恐慌:运行时错误:无效的内存地址或无指针 dereference [signal 0xb code = 0x1 addr = 0x0 pc = 0x400da9]
goroutine 125 [running]:runtime.panic(0x697480,0x850d13) /usr/lib/go/src/pkg/runtime/panic.c:279 + 0xf5 main.concurrent(0x25e5) /home/ytn/go/src/listner/start.go:19 + 0x1a9由main.main创建 /home/ytn/go/src/listner/init.go:51 + 0x224
如何解决此问题?避免此类错误的最佳做法是什么?
for i := n; i < n+11; i++ {
user, err := s.GetUser(i)
fmt.Sprint(user.Username) //This is line 19
if err != nil && user != nil {
continue
}
} defer wg.Done()
答案 0 :(得分:1)
很难说如何在不看代码的情况下修复它,但基本上它意味着你有一个nil
的指针,并且你试图得到它指向的值:
var x *MyStruct
fmt.Println(*x)
要修复它,你需要在解除引用之前检查它是否为零:
var x *MyStruct
if x != nil {
fmt.Println(*x)
}
或让它实际指向一个值
var x *int
x = &MyStruct{}
fmt.Println(*x)