golang 如何判断两变量值未知情况下是否相等

最近在学习go 想要判断两个变量是否相等 发现如果这两个变量赋值时如果类型不同 使用if判断时会直接报错

.\test.go:123:8: invalid operation: c == d (mismatched types int and float64)

以下是我的代码 请教各位大佬 如果这种情况应该如何进行判断

package main 
import (
    "fmt"
    "reflect"
)
func main() {

    c := 1
    d := 1.1
    ct := reflect.TypeOf(c)
    dt := reflect.TypeOf(d)
    fmt.Println("!!!!!!!!!!!!!!!!!!")
    fmt.Println(ct)
    fmt.Println(dt)

    if ct == dt {
        fmt.Println("相同类型")
        if c == d {
            fmt.Println("对")
        } else {
            fmt.Println("错")
        }
    } else {
        fmt.Println("不同类型")
    }
}
阅读 7.7k
5 个回答

根据题主代码的意图,可以直接使用reflect.DeepEqual函数来比较,即:

package main

import (
    "fmt"
    "reflect"
)

func main() {
    c := 1
    d := 1.1
    fmt.Println(reflect.DeepEqual(c, d))
}

不能比较吧,编译的时候不能通过。。

不通类型无法判断是否相等,你需要将两个类型的值转换成同一类型。

  1. 先类型断言,检测类型是否相同
  2. 如果类型相同,在检测值
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题