Maison >développement back-end >Golang >Comment puis-je implémenter un opérateur de comparaison générique dans 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 }
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) }
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!