invalid memory address or nil pointer dereference
一、检查数据库是否连接成功
二、变量赋值时是否已经开辟内存空间
1. 如果只声明不开辟空间,则指针指向nil, 在给变量赋值时会报错
type person struct {
name string
age int
}
var p *person
p.name = "dpq"
p.age = 3
2. 使用new为值变量开辟空间
type person struct {
name string
age int
}
p := new(person)
p.name = "dpq~"
p.age = 33
3. 总结
new和make的区别:new为值变量开辟内存空间,返回指针, make为引用变开辟内存空间, 返回变量本身。
指针,也称为指针变量,存储了一个值的内存地址,我们称之为“值地址”,而指针自己本身也有地址的,我们称之为“指针地址”。
熟练使用指针,我们要理清与指针相关的三个概念,以及两个运算符*和&
三个概念:指针地址,值地址(也就是指针),值地址指向的值。
假设i为指针,那&i为“指针地址”,i为“值地址”或“指针”,*i为“值地址指向的值”,三者以指针i为中枢,构成了一个前中后的关系。
定义一个指针,才最先有指针地址,然后初始化值地址,才有了值地址,这时候才能对值地址进行赋值,很多朋友忘了中间这步,所以就导致报错,下次赋值之前要先初始化值地址哦