1、数组越界(运行时错误)。
运行结果:
index out of range
:索引超出范围(数组越界)2、空指针异常(运行时错误)。
运行结果:
segmentation violation
:内存段异常。3、类型断言失败(接口转换异常)。
运行结果:
interface conversion: interface {} is string, not int
:接口转换,接口是string,不是int。4、通道为空,通道已关闭
运行结果:
close of nil channel
关闭空的通道。运行结果:
send on closed channel
:发送给已关闭的通道。5、死锁,所有线程睡眠(致命错误)
这一条是致命错误,不属于panic,但是跟panic异常一样,会导致程序挂掉。
运行结果:
fatal error: all goroutines are asleep - deadlock
:指明错误,所有线程睡眠,死锁。6、给空map赋值
运行结果
assignment to entry in nil map
:赋值到空的map。7、致命错误:并发的map写
运行结果
8、递归死循环,堆栈溢出(运行时:goroutine堆栈超出限制,致命错误:堆栈溢出)
运行结果
这里出现了递归循环调用,即死循环,因为结构体
people
重写了官方包的String()
方法,而fmt.Sprintf()
中调用了String()
方法,就出现了又回到p.String()
方法,然后又调用fmt.Sprintf()
方法,然后又回来,导致死循环,也导致堆栈溢出。runtime: goroutine stack exceeds 1000000000-byte limit
:运行时:goroutine堆栈超出1000000000字节限制fatal error: stack overflow
:
致命错误:堆栈溢出这种错误在递归没有出口的时候出现,也就是递归死循环的时候出现
运行结果