golang 出现 panic: runtime error: invalid memory address or nil pointer dereference

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36431213/article/details/82967982
  • golang 中如果我们定义一个指针并像普通变量那样给他赋值,例如下方的代码
package main

import "fmt"
func main() {
	var i *int
	*i = 1
	fmt.Printf("%p  %v", &i, *&i)
}
  • 就会报这样的一个错误
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x1 addr=0x0 pc=0x498025]
  • 报这个错的原因是 go 初始化指针的时候会为指针赋空值即为 nilnil 指针系统还未给其分配内存,所以给 nil 赋值就会报错
  • 解决这个问题非常简单,在给指针赋值前可以先创建一块内存分配给赋值对象即可
package main

import "fmt"
func main() {
	var i *int
	i = new(int)
	*i = 1
	fmt.Printf("%p  %v", &i, *&i)
}

猜你喜欢

转载自blog.csdn.net/qq_36431213/article/details/82967982