golang 报错 segmentation violation code=0x1

介绍一个报错

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x8 pc=0x109aa48]

代码如下

package main

import (
    "log"
)

type Hi struct {
    Name string
}

var h *Hi

func main() {
    /*
        panic: runtime error: invalid memory address or nil pointer dereference
        [signal SIGSEGV: segmentation violation code=0x1 addr=0x8 pc=0x109aa48]
    */
    h.Name = "fail"
    log.Println(h)
}
阅读 21.3k
3 个回答

补充下: 你的错误是空指针错误,并不是你标题写的错误...

var h *Hi

这里只是声明了一个 指针型变量, 没有给予具体的值, 所以是个空指针

空指针无法直接使用,你应该使用下面的方法,声明并创建

var h = new(Hi)

code 为 1 就是 linux下运行出错了但是没有自定义错误码啊.

var h *Hi 这只是定义了 h 是一个指针, 并没有实例啊 你后面直接使用,肯定是空指针啊.

空指针,未分配内存

推荐问题