首页 > 其他分享 >哪些情况可以出现panic错误

哪些情况可以出现panic错误

时间:2023-12-30 14:34:22浏览次数:25  
标签:map string 错误 哪些 fmt map1 Println panic

一、数组下标越界(运行时错误,对于静态类型语言,数组下标越界是致命错误)

package main
import "fmt"
func main() {
    var s []string
    fmt.Println(s)
    fmt.Println(s[0])
}

二、空指针引用(访问未初始化的指针或 nil 指针)

直接引用空指针结构体的字段会引发panic,但调用成员方法里如果没引用结构体的字段不会引发panic,有引用到字段还是会panic

package main

import "fmt"

type Person struct {
    Name string
    Age  int
}

func (p *Person) getName() string {
    fmt.Println(p.Name)
    return ""
}

func (p *Person) doNothing() string {
    fmt.Println("doNothing")
    return ""
}

func main() {
    var p *Person
    fmt.Println(p)      //nil
    fmt.Println(p.Name) //panic
    p.getName()         //会panic
    p.doNothing()       //不会panic
}

三、类型断言失败(接口转换异常)

    a := UserPb{}
    var b interface{}
    b = a
    c := b.(string)
    fmt.Println(c)

四、channel相关

1)试图往已经 close 的 chan 里发送数据
3)关闭为nil的channel
3)关闭一个已经关闭的通道
4)关闭一个还有发送阻塞go队列的chan,关闭时会后会唤醒发送阻塞的go协程继续写数据,此时chan已关闭,触发panic: send on closed channel

五、死锁,所有线程睡眠(致命错误)
六、给空map赋值

    var map1 map[string]int
    if map1 == nil {
        fmt.Println("map1为nil")
    }
    fmt.Println("第1次打印map1:", map1)
    map1["test"] = 1
    fmt.Println("第2次打印map1:", map1)

七、并发读写相同的map(对于并发读写 map 的地方,应该对 map 加锁。)
八、递归死循环,堆栈溢出

标签:map,string,错误,哪些,fmt,map1,Println,panic
From: https://www.cnblogs.com/beatle-go/p/17934993.html

相关文章

  • 华为认证 | HCIA考试费用多少钱?考哪些内容?
    对华为认证感兴趣的小伙伴应该都知道HCIA认证,HCIA认证是华为职业认证中用于标识个人能力在某一技术领域达到工程师级别的证明。表示通过认证的人员具备安装、配置、运行ICT设备,并进行故障排除的能力。那考HCIA需要多少钱,都考哪些内容呢,让我们一起来了解下。01华为HCIA网络工程师是......
  • 网络安全漏洞的种类分为哪些?
    漏洞,是指在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统。漏洞的出现,不仅会造成个人隐私信息泄露,还涉及到我们的财产安全,那么网络安全漏洞的种类分为哪些?接下来小编就带大家认识一下吧。第一:软件漏洞任......
  • 管理类联考考试科目有哪些?一次性搞懂!
    考研,即研究生入学考试,是许多大学毕业生为了继续深造而参加的考试。一般来说,考研的科目包括英语、政治、数学等多个学科,考试时间通常会持续数天。然而,有一些专业的考研只需要一天的时间,这就是管理类的专业学位考试。管理类联考是什么?管理类联考是指管理类专业硕士研究生入学统一考试......
  • 开发商城小程序具有哪些模块和功能?(临沂软件定制开发-艾思软件)
    随着移动互联网的发展,微信小程序已经成为了企业、商家和开发者的重要工具。商城小程序作为微信小程序的一种类型,为商家提供了一个全新的销售渠道。本文将详细介绍商城小程序的模块和功能,并附带相关代码。一、商城小程序的模块首页模块:展示商城的热门商品、优惠活动等信息,吸引......
  • 电子产品和电器到各国需要哪些认证
    产品出口到不同国家所需要做的认证也是不一样的。1、国际-CB认证2、国内-质检报告、CCC、CQC、ISO、SRRC、BSMI、NCC3、欧盟-CE认证、E-Mark认证、ROHA、REACH4、韩国-KC认证5、日本-PSB认证6、澳洲-SAA、RCM认证7、德国-WEEE注册8、美国-ETL认证、FCC认证、MET认......
  • 社招面试题:说一说SPI是什么,有哪些使用场景?
    大家好,我是小米!今天在这里和大家分享一个在技术面试中常被问到的话题——SPI(ServiceProviderInterface),这是一个令人着迷的技术领域,也是很多Java开发者必须要熟悉的概念。不废话,让我们一起来揭开SPI的神秘面纱,看看它在实际开发中有哪些精彩的应用场景吧!SPI是什么?首先,我们来解释一......
  • CRM公司管理系统能为中小企业做哪些事情?CRM功能解析
    巴菲特曾说:“设计出的工具越多,使用工具的人就得越聪明。“”如果您是中小企业主,想要企业更好地发展,您都可以考虑使用CRM管理系统。它可以帮助中小企业有效地管理客户,提高业务效率,实现快、稳、准的发展。本文将详细的描述公司管理系统CRM对中小型公司意味着什么???一、什么是CRM系......
  • CRM系统的发展经历了哪些阶段?CRM系统重要节点
    CRM管理系统从被发明到现在,历经多次迭代已经成为一个相对成熟的系统。企业可以靠它管理客户信息,提升盈利能力。今天就来介绍一下CRM的发展历程。一、CRM系统的雏形广义上的CRM系统其实可以追溯到古希腊时期。当时的商人靠书写记录自己与客户和合作伙伴建立联系的方式。到了现......
  • 软件定制开发排行前十名的公司有哪些
    软件定制开发排行前十名的公司可能包括:华盛恒辉科技有限公司:是一家专注于高端软件定制开发服务和高端建设的服务机构,致力于为企业提供全面、系统的开发制作方案。在开发、建设到运营推广领域拥有丰富经验,在教育,医疗,APP,管理,商城,人工智能,ERP,系统二次开发,CRM等领域有很多成功......
  • 北京php软件开发公司有哪些
    在北京,有许多知名的PHP软件开发公司,以下是一些比较知名的公司:华盛恒辉科技有限公司:是一家专注于高端软件定制开发服务和高端建设的服务机构,致力于为企业提供全面、系统的开发制作方案。在开发、建设到运营推广领域拥有丰富经验,在教育,医疗,APP,管理,商城,人工智能,ERP,系统二次开......