You can always combine multiple interface constraints: type ConstraintA(type A) interface { Foo() A }
type ConstraintB(type B) interface { Bar() B } type CombinedConstraint(type A, B) interface { (ConstraintA(A)) (ConstraintB(B)) } func F(type A, B CombinedConstraint(A, B)) (...) { ... } So I don't think removing contracts prevents you from getting the same if you find it more readable. On Wed, Jun 17, 2020, 18:58 Denis Cheremisov <denis.cheremi...@gmail.com> wrote: > IMO a groups of constraints are horrible with interfaces > > type CommonResponse(type E) interface { > GetError() E > } > > type CommonError interface { > GetCode() int32 > } > > func IsOK(type R CommonResponse(E), E CommonError)(r R) bool { > switch r.GetError().GetCode() { > case 0, 200, 201: > return true > default: > return false > } > } > > vs > > constract CommmonResponse(R, E) { > R GetError() E > E GetCode() int32 > } > > func IsOK(type R, E CommonResponse)(r R) bool { > switch r.GetError().GetCode() { > case 0, 200, 201: > return true > default: > return false > } > } > > That trickery with commas to express dependcy of types is hard > > -- > You received this message because you are subscribed to the Google Groups > "golang-nuts" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to golang-nuts+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/golang-nuts/4e25a228-4c96-44ba-b33a-bbde3460ea2ao%40googlegroups.com > <https://groups.google.com/d/msgid/golang-nuts/4e25a228-4c96-44ba-b33a-bbde3460ea2ao%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/CAEkBMfErcAZoO%3D1yPtVCmyuoq%3DRUaNMHP3RBJ5VTdCbLNt%2BLnw%40mail.gmail.com.