Go自动类型转换-将接口{}与具体类型进行比较
如果我想比较两种类型-string和interface{}我通常会写:Go自动类型转换-将接口{}与具体类型进行比较,go,Go,如果我想比较两种类型-string和interface{}我通常会写: package main import "log" func main() { var p1 interface{} var p2 string p1 = "123" p2 = "123" if v, ok := p1.(string); ok { log.Println(v == p2) } else { log.Println("fa
package main
import "log"
func main() {
var p1 interface{}
var p2 string
p1 = "123"
p2 = "123"
if v, ok := p1.(string); ok {
log.Println(v == p2)
} else {
log.Println("false")
}
}
我认为当类型(p1)!=字符串。
但是如果我写的是正确的吗
package main
import "log"
func main() {
var p1 interface{}
var p2 string
p1 = "123"
p2 = "123"
log.Println(p1 == p2)
}
如果类型(p1)!=字符串中没有错误。但它是相同的变体,还是我应该写上一个 直接问题的简短答案是是,尽管原始代码(问题中的第一个片段)显示了对类型检查的更多考虑,因此从软件工程的角度来看,它可能更正确。如果不了解更多的上下文,就很难判断
根据报告: 界面值具有可比性。两个接口值相等,如果 它们具有相同的动态类型和相同的动态值,或者两者都具有 价值为零 非接口类型x的值x和接口类型t的值t 当X类型的值具有可比性且X实现 如果T的动态类型与X和T的相同,则它们相等 动态值等于x
我相信您所问的问题属于第二段的内容。您直接问题的简短答案是是,尽管原始代码(问题中的第一个片段)显示了对类型检查的更多考虑,因此从软件工程的角度来看,它可能更正确。如果不了解更多的上下文,就很难判断
根据报告: 界面值具有可比性。两个接口值相等,如果 它们具有相同的动态类型和相同的动态值,或者两者都具有 价值为零 非接口类型x的值x和接口类型t的值t 当X类型的值具有可比性且X实现 如果T的动态类型与X和T的相同,则它们相等 动态值等于x 我相信你的问题符合第二段的规定。回答了你的问题吗?回答了你的问题吗?