Sobes.tech
Junior — Middle

Is de structuur in Go compatibel met de Comparable-interface?

sobes.tech AI

Antwoord van AI

In Go is de interface Comparable geen ingebouwde standaard, maar wordt vaak begrepen als een interface met een vergelijkingsmethode, bijvoorbeeld:

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

Een structuur in Go is compatibel met de interface als deze alle methoden van die interface implementeert. Met andere woorden, als je structuur de Compare-methode met de juiste handtekening implementeert, is deze compatibel met Comparable.

Voorbeeld:

type MyStruct struct {
    Value int
}

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

// MyStruct implementeert nu Comparable

Als de Compare-methode niet is geïmplementeerd, is de structuur niet compatibel met de interface Comparable.