在go语言中什么情况下会引起Panic

在 Go 语言中,以下情况会引起 panic:

 一、除数为零

package main

import "fmt"

func main() {

    a := 10

    b := 0

    fmt.Println(a / b)

}

 运行这段代码会引发 panic,因为除数不能为零。

 二、索引越界

package main

 

import "fmt"

 

func main() {

    arr := []int{1, 2, 3}

    fmt.Println(arr[3])

}

 访问超出数组或切片长度的索引会导致 panic。

 三、空指针解引用

package main

 

import "fmt"

 

type Person struct {

    Name string

}

 

func main() {

    var p *Person

    fmt.Println(p.Name)

}

 对一个未初始化的指针(空指针)进行解引用操作会引发 panic。

 四、发送或接收已关闭的通道数据

package main

 

import "fmt"

 

func main() {

    ch := make(chan int)

    close(ch)

    ch <- 10 // 向已关闭的通道发送数据会引发 panic

    fmt.Println(<-ch) // 从已关闭的通道接收数据也可能引发 panic,具体取决于接收时机

}

 五、类型断言失败

package main

 

import "fmt"

 

func main() {

    var i interface{} = 10

    s := i.(string)

    fmt.Println(s)

}

 当进行类型断言时,如果实际类型与断言的类型不匹配,会引发 panic。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值