gpt4 book ai didi

高语 : panic on call of nil object's method

转载 作者:IT王子 更新时间:2023-10-29 02:26:27 26 4
gpt4 key购买 nike

延迟函数:

func PrintPing(req *proto.PingRequest, resp *proto.PingResponse) {
fmt.Println("resp:", resp)
fmt.Println("resp.GetResult():", resp.GetResult())
}

在 panic 之后调用此函数时,respresp.GetResult() 为 nil。

但为什么 resp.GetResult() 也是 nil?控制台输出:

resp: <nil>
resp.GetResult(): <nil>

这个案例有官方定义吗?

最佳答案

我假设您的问题是为什么 resp.GetResult() 调用本身不会 panic ,因为它是在 nil 实例上调用的。

这就是 Go 的工作原理。该方法也可以在实例为 nil 的类型上调用。只要方法本身不访问实例,它就会工作并且可以实现 nil 实例的行为。

这与延迟函数无关。也可以在其他上下文中模拟:https://play.golang.org/p/qQanhQnIcL

关于高语 : panic on call of nil object's method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41547112/

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