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 <[email protected]>
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 [email protected].
> 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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/golang-nuts/CAEkBMfErcAZoO%3D1yPtVCmyuoq%3DRUaNMHP3RBJ5VTdCbLNt%2BLnw%40mail.gmail.com.