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为中枢,构成了一个前中后的关系。

定义一个指针,才最先有指针地址,然后初始化值地址,才有了值地址,这时候才能对值地址进行赋值,很多朋友忘了中间这步,所以就导致报错,下次赋值之前要先初始化值地址哦

posted @ 2021-12-21 11:00  dddpppqqq  阅读(593)  评论(0编辑  收藏  举报