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

Go : Vérifiez si chaque élément d'une tranche satisfait une condition

WBOY
Libérer: 2024-02-08 21:10:29
avant
1031 Les gens l'ont consulté

Go : Vérifiez si chaque élément dune tranche satisfait une condition

l'éditeur php Zimo vous présente une technique du langage Go très pratique : vérifier si chaque élément de la tranche remplit les conditions. La tranche du langage Go est une structure de données flexible et puissante, mais dans les applications pratiques, nous devons souvent effectuer des jugements conditionnels sur les éléments de la tranche. Cet article présentera en détail comment utiliser les instructions range et if du langage Go pour vérifier si chaque élément de la tranche répond aux conditions que nous avons définies. En maîtrisant cette technique, vous pourrez traiter plus efficacement les données découpées et améliorer la lisibilité et la maintenabilité de votre code.

Contenu de la question


Quelle est la manière la plus élégante de vérifier si chaque élément d'une tranche répond à certaines conditions ? Dans mon scénario particulier, j'ai une tranche d'octets : [16]byte. Je dois vérifier si tous les octets sont à 0.

Par exemple, en js, je ferais quelque chose comme :

const uint8Array = new Uint8Array([0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0])//Can be thought of as an array of "bytes"

const isEmpty = uint8Array.every(byte=>byte === 0)//Check that every "byte" is zero

console.log(isEmpty)//false
Copier après la connexion

Quelle est la manière la plus propre et la plus simple de procéder ?


Solution de contournement


Pour plus de lisibilité et de flexibilité (par exemple si vous devez utiliser des byte 以外的类型进行操作),您可能会受益于编写一个小的 all fonctions génériques

  • prend une tranche et un prédicat du type d'élément de la tranche, et
  • Return true si et seulement si tous les éléments de la tranche satisfont au prédicat.

Vous êtes alors libre d'utiliser la fonction générique avec différentes tranches et prédicats.

package main

import "fmt"

func main() {
    bs := []byte{15: 1} // slice of 16 bytes, all but the last one of which are zero
    isZero := func(b byte) bool { return b == 0 }
    fmt.Println(All(bs, isZero)) // false
}

func All[T any](ts []T, pred func(T) bool) bool {
    for _, t := range ts {
        if !pred(t) {
            return false
        }
    }
    return true
}
Copier après la connexion

(Aire de jeux)

Pas besoin de créer une bibliothèque pour les all fonctions, cependant ; Un peu de copie vaut un peu de dépendance.

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!

Étiquettes associées:
source:stackoverflow.com
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
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!