版权声明:本文为博主原创文章,未经博主允许不得转载。 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
初始化指针的时候会为指针赋空值即为nil
,nil
指针系统还未给其分配内存,所以给nil
赋值就会报错 - 解决这个问题非常简单,在给指针赋值前可以先创建一块内存分配给赋值对象即可
package main
import "fmt"
func main() {
var i *int
i = new(int)
*i = 1
fmt.Printf("%p %v", &i, *&i)
}