1
sadfQED2 2022-02-17 13:05:57 +08:00 via Android 1
这并不是编译器错误,搜索“go nil!=nil”
|
2
SingeeKing 2022-02-17 13:15:30 +08:00
盲猜中间存在有类型的 error ,Go 中任何 interface 的 nil 必须同时满足动态类型为 nil 和动态值也为 nil
|
3
SingeeKing 2022-02-17 13:17:25 +08:00
package main
import "fmt" type AnError struct{} func (AnError) Error() string { return "some error" } func DoSomething() *AnError { return nil } func main() { var err error = DoSomething() fmt.Println(err, err == nil) // nil false } |
4
jasonkayzk 2022-02-17 14:32:10 +08:00
没特别注意过这一点,学习了!
|
5
hzzhzzdogee 2022-02-17 14:59:09 +08:00
经典问题, interface 的 类型信息 和 值, 两者都为 nil, 才会 interface == nil. 简单说就是 err != nil 是因为有类型信息.
|
6
wlgq2 OP 哈哈,楼上都猜错了,正确答案是,调试器或者 JetBrains 问题
|
7
cyrivlclth 2022-02-17 17:22:24 +08:00
未能复现
|
8
cyrivlclth 2022-02-17 17:24:07 +08:00
我重新尝试了你的代码,err 一直都是 nil ,只是调试器会提示 invalid interface type: could not found str field
|