根据规范:
接口值具有可比性。如果两个接口值具有相同的动态类型和相等的动态值,或者两者的值为 nil,则它们是相等的。
var err error var reader io.Reader
据了解,err和reader具有不同的动态类型(error和io.Reader),因此没有可比性。
fmt.Println(err == reader)
会导致编译错误:
无效操作:err == reader(错误类型与 io.Reader 不匹配)
如果是这样,为什么Println命令对两个变量输出相同的结果?为什么两者都是nil?
fmt.Printf("reader: %T", reader) // nil
fmt.Printf("error: %T", err) // nil编辑 reflect.TypeOf(err)或reflect.TypeOf(reader)也将输出nil. 我不明白如果类型不同,为什么输出相同。
人到中年有点甜
翻翻过去那场雪
随时随地看视频慕课网APP
相关分类