重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

go语言中的空指针,go 指针的指针

空指针是什么意思

C/C++中有指针的概念,用于指向一个内存地址。当指针指向0(NULL)时,叫空指针,表示没有。

创新互联建站成都企业网站建设服务,提供成都网站制作、网站设计网站开发,网站定制,建网站,网站搭建,网站设计,成都响应式网站建设,网页设计师打造企业风格网站,提供周到的售前咨询和贴心的售后服务。欢迎咨询做网站需要多少钱:18980820575

在面向对象的语言(如java)中,没有指针的概念,但它的变量就相当于指针。当一个变量没有指向任何对象时,通常赋予null值,习惯上也称为空指针(因为科班程序员都学过C),这时如果误认为有对象,并调用其方法或属性时,就会报空指针(Null Pointer)错误。

GO接口可能产生的空指针问题

一个例子

运行后报错

主要原因是 if out != nil 这个判断为true,但是out实际的可写入指针为nil

一个接口类型的值,包括 动态类型 和 动态值 两个部分。在把一个变量隐式的转换为接口值时,我们要注意该变量的值是否为nil。如之前的例子, var buf *bytes.Buffer ,buf的值为nil,但是隐式转换 var out io.Writer = buf 后,out的动态类型为 *bytes.Buffer ,动态值为 nil ,而接口类型的非空判断,必须动态类型和动态值都为nil。这就导致了上述空指针的panic

golang空指针卡死问题

golang空指针卡死解决方法如下:

1、出错的位置在执行Excute函数处,debug还是搜索百度都找不到解决方案。解决方案就是不用Goland编译文件。

2、直接使用gobuild编译文件后,再执行,访问网页就不报错了。

golang-指针类型

tips: *号,可以指向指针类型内存地址上的值,号,可以获取值类型的内存地址

每一个变量都有内存地址,可以通过变量来操作内存地址中的值,即内存的大小

go语言中获取变量的内存地址方法:通过 符号可以获取变量的地址

定义:普通变量存储的是对应类型的值,这些类型就叫值类型

变量b,在内存中的地址为:0x1040a124,在这个内存地址上存储的值为:156

定义:指针类型的变量存储的是⼀个地址,所以⼜叫指针类型或引⽤类型

b 是值类型,它指向的是内存地址上的值

a是指针类型,它指向的是b的内存地址

指针类型定义,语法: var 变量名 *类型

指针类型在定义完成后,默认为空地址,即空指针(nil)

在定义好指针变量后,可以通过***** 符号可以获取指针变量指向的变量

在这里的 *a 等价于 b,通过修改 *a ,最终修改的是值类型b的值

这里a,d是值类型,b,c是指针类型

d就相当于把a内存地址上值,在内存中从新开辟了一块空间存储,d和a互不影响

b,c相当于指向了a的内存地址,当使用*号引用出内存地址上的变量上,修改值得,a的值也会跟着改变


分享文章:go语言中的空指针,go 指针的指针
标题来源:http://cqcxhl.cn/article/heijho.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP