Вы можете быть менее точным, вам не нужно помнить основной тип
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")
}
}
Детская площадка