Sobes.tech
Junior — Middle

A estrutura em Go é compatível com a interface Comparable?

sobes.tech IA

Resposta da IA

Em Go, a interface Comparable não faz parte do padrão incorporado, mas muitas vezes é entendida como uma interface com um método de comparação, por exemplo:

type Comparable interface {
    Compare(other interface{}) int // devolve -1, 0, 1
}

Uma estrutura em Go é compatível com a interface se implementar todos os métodos dessa interface. Ou seja, se sua estrutura implementar o método Compare com a assinatura necessária, ela é compatível com Comparable.

Exemplo:

type MyStruct struct {
    Value int
}

func (m MyStruct) Compare(other interface{}) int {
    o, ok := other.(MyStruct)
    if !ok {
        return -2 // ou tratamento de erro
    }
    if m.Value < o.Value {
        return -1
    } else if m.Value > o.Value {
        return 1
    }
    return 0
}

// MyStruct agora implementa Comparable

Se o método Compare não for implementado, a estrutura não é compatível com a interface Comparable.