登录
首页 >  Golang >  Go问答

对两个值进行同基础类型不同类型的比较

来源:stackoverflow

时间:2024-03-21 13:00:33 454浏览 收藏

在 Go 语言中,比较具有不同类型但基础类型相同的两个变量值时,需要进行类型转换。一种方法是将较小的类型转换为较大的类型,另一种方法是使用更通用的方法,利用反射机制比较两个变量的底层值。

问题内容

如何比较具有不同类型但基础类型相同的两个变量的值。

type   SomeID    uint8
type   OtherID   uint8

func areEqual(sid SomeID, oid OtherID) bool {
   // error: mismatched types
   return sid == oid
}

解决方案


正如 mkopriva 提到的,需要进行类型转换来比较值。

https://tour.golang.org/basics/13

func areequal(sid someid, oid otherid) bool {
   return uint8(sid) == uint8(oid)
}

你可以不太准确,你不需要记住基础类型

func areequal(sid someid, oid otherid) bool {
   return sid == someid(oid)
}

你可以更通用

func areEqual(x, y interface{}) (bool, error) {
    xv := reflect.ValueOf(x)
    yv := reflect.ValueOf(y)
    if yv.Type().ConvertibleTo(xv.Type()) {
        return xv.Interface() == yv.Convert(xv.Type()).Interface(), nil
    } else {
        return false, errors.New("Types are mismatched")
    }
}

Playground

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>