gpt4 book ai didi

exception - 戈朗 : Defensive interfaces for nil types

转载 作者:IT王子 更新时间:2023-10-29 01:51:23 24 4
gpt4 key购买 nike

我最近发现一些go代码在一个测试框架中运行,其中有一些未初始化的变量。

这会导致 panic ,在顶部有一个包含一些 C 代码的堆栈跟踪。

有没有一种方法,在函数中,我们可以简洁地检测作为实现成员引用的结构是否为 nil?即

func ( d *Dog ) canBark Bool {
//if d is nil, cryptic exception is thrown.
//is there a way to defend against this?
}

抛出的错误是

panic: runtime error: invalid memory address or nil pointer dereference 
[signal 0xb code=0x1 addr=0x0 pc=0x4ec83a]
goroutine 16 [running]:
runtime.panic(0x9b7400, 0xf7ddf3)

似乎在 go 中,这种较低级别的错误应该很少发生,也许根本不会发生......

可能有一种 Golang 方法来处理 nil 引用,它不会因 if/else 逻辑而使代码过于困惑。例如,在 java 中,您可以将大代码段包装在空指针异常处理程序中。

最佳答案

你可以检查 nil 然后做任何事情:

func (d *Dog) canBark bool {
if d == nil {
// do something useful, maybe? Like log
// a stack trace for debugging later
log.Print("Attempt to bark a nil dog!")
return false
}
// do the regular things
}

关于exception - 戈朗 : Defensive interfaces for nil types,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29525368/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com