Avatar ·

Go中==和===的区别

大家好!我在学习Go,之前用的是JavaScript,对比较运算符有些困惑。在JS中有严格比较(===)和非严格比较(==),而在Go中我只看到==。我的理解是否正确,Go中没有===运算符?如果没有,那么不同类型之间的比较是如何工作的?

我尝试写了这样的代码:

package main

import "fmt"

func main() {
    var a int = 5
    var b float64 = 5.0
    fmt.Println(a == b) // 编译错误:mismatched types int and float64
}

我原本以为Go要么会进行类型转换(像JS的非严格比较),要么会报错。结果我得到了编译错误。也就是说在Go中根本不能直接比较int和float64?总是需要显式地进行类型转换?那么结构体或指针的比较呢?有没有==表现得像非严格比较的情况?

请告诉我如何在Go中正确地比较值,以及