Maison >développement back-end >Golang >Comment puis-je trouver efficacement la position d'un élément dans une Go Slice ?

Comment puis-je trouver efficacement la position d'un élément dans une Go Slice ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-23 16:19:10304parcourir

How Can I Efficiently Find the Position of an Element in a Go Slice?

Détermination de la position d'un élément dans une tranche

Déterminer la position d'un élément dans une tranche n'est pas aussi simple qu'il y paraît. Cela est dû à l'absence de fonction de bibliothèque générique dans Go à cet effet.

Pour résoudre ce problème, des fonctions personnalisées comme celle ci-dessous peuvent être créées :

type intSlice []int

func (slice intSlice) pos(value int) int {
    for p, v := range slice {
        if (v == value) {
            return p
        }
    }
    return -1
}

Cette fonction parcourt la tranche. en utilisant range et vérifie si la valeur de l'élément correspond à la valeur cible. Si une correspondance est trouvée, l'index est renvoyé.

Malheureusement, cette approche n'est pas idéale pour les tranches arbitraires. Le système de types de Go ne fournit pas de mécanisme simple permettant aux fonctions d'opérer sur des tranches de différents types.

Pour les tranches d'octets en particulier, la fonction bytes.IndexByte peut être utilisée. Cette fonction renvoie l'index de la première occurrence d'une valeur d'octet dans une tranche d'octets.

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