比较不同类型的两个值(但基础类型相同)



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

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")
    }
}

操场

相关内容

  • 没有找到相关文章

最新更新