golang常见导致panic的场景

1、越界

常见有数组越界和字符串越界
在这里插入图片描述
在这里插入图片描述

2、空指针引用

直接引用空指针结构体的字段会引发panic,但调用成员方法里如果没引用结构体的字段不会引发panic
golang常见导致panic的场景_第1张图片

3、断言失败

golang常见导致panic的场景_第2张图片

4、map操作错误

map未初始化,可读不可写。

map的value如果是结构体指针,使用时先判空。
golang常见导致panic的场景_第3张图片

5、除数为0

golang常见导致panic的场景_第4张图片

6、调用未实现的方法

7、通道操作错误

golang常见导致panic的场景_第5张图片
golang常见导致panic的场景_第6张图片

向已经关闭的管道写会panic,读不会panic

在这里插入图片描述

多次调用close会导致panic

golang常见导致panic的场景_第7张图片

只有生产者,没有消费者,当管道已满时,所有协程都会被阻塞,从而导致死锁。

8、goroutine竞争资源

golang常见导致panic的场景_第8张图片

死锁

golang常见导致panic的场景_第9张图片

线程不安全的数据结构,多线程操作

9、内存不足

10、 Stack Overflow

递归死循环或者超出栈空间
golang常见导致panic的场景_第10张图片

你可能感兴趣的:(go框架,golang,数据结构,哈希算法)