Maison > développement back-end > Golang > le corps du texte

Comment puis-je implémenter un opérateur de comparaison générique dans Go ?

Patricia Arquette
Libérer: 2024-11-04 02:01:01
original
264 Les gens l'ont consulté

How Can I Implement a Generic Comparison Operator in Go?

Comment s'appelle l'interface comparable ?

Dans Go, il n'existe pas d'interface prédéfinie fournissant un opérateur de comparaison générique (<). Au lieu de cela, vous pouvez définir votre propre fonction Less pour comparer vos types. La fonction Less prend deux arguments du même type et renvoie un booléen indiquant si le premier argument est inférieur au second.

Voici un exemple de fonction Less qui peut comparer des entiers et des chaînes :

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
}
Copier après la connexion

Vous pouvez utiliser la fonction Moins pour insérer des éléments dans une liste chaînée 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)
}
Copier après la connexion

Cette fonction Insérer maintiendra la liste chaînée dans un ordre trié en fonction de la fonction Moins.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!