Maison  >  Article  >  développement back-end  >  Comment puis-je comparer les valeurs de différents types dans Go ?

Comment puis-je comparer les valeurs de différents types dans Go ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-04 01:34:03740parcourir

How Can I Compare Values of Different Types in Go?

Comment s'appelle l'interface comparable ?

Dans Go, il n'y a pas d'interface comparable explicite. Pour comparer des valeurs de différents types, vous pouvez utiliser la fonction Less.

Voici comment implémenter une fonction Less :

func Less(a, b interface{}) bool {
    switch a.(type) {
    case int:
        if ai, ok := a.(int); ok {
            if bi, ok := b.(int); ok {
                return ai < bi
            }
        }
    case string:
        if ai, ok := a.(string); ok {
            if bi, ok := b.(string); ok {
                return ai < bi
            }
        }
    // ...
    default:
        panic("Unknown")
    }
    return false
}

Vous pouvez utiliser la fonction Less pour comparer les valeurs dans un lien lister et insérer de nouveaux éléments de manière triée :

func Insert(val interface{}, l *list.List) *list.Element {
    e := l.Front()
    if e == nil {
        return l.PushFront(val)
    }
    for ; e != nil; e = e.Next() {
        if Less(val, e.Value) {
            return l.InsertBefore(val, e)
        }
    }
    return l.PushBack(val)
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn