102 votes

Comment vérifier si une tranche est vide ?

J'appelle une fonction qui renvoie un tableau vide s'il n'y a pas de valeurs.

Quand je fais ça, ça ne marche pas :

if r == [] {
    fmt.Println("No return value")            
}

La solution que j'utilise est la suivante :

var a [0]int
if r == a {
    fmt.Println("No return value")            
}

Mais déclarer une variable juste pour vérifier la valeur de retour ne semble pas correct. Quelle est la meilleure façon de procéder ?

124voto

Simone Carletti Points 77653

len() renvoie le nombre d'éléments dans une tranche ou un tableau.

En supposant que whatever() est la fonction que vous invoquez, vous pouvez faire quelque chose comme :

r := whatever()
if len(r) > 0 {
  // do what you want
}

ou si vous n'avez pas besoin des articles

if len(whatever()) > 0 {
  // do what you want
}

18voto

abhink Points 4753

Vous pouvez simplement utiliser le len fonction.

if len(r) == 0 {
    fmt.Println("No return value")            
}

Bien que, puisque vous utilisez des tableaux, un tableau de type [0]int (un tableau d'int de taille 0) est différent de [n]int (n tableau d'int de taille n) et ne sont pas compatibles entre eux.

Si vous avez une fonction qui renvoie des tableaux de différentes longueurs, pensez à utiliser des tranches, car la fonction ne peut être déclarée qu'avec un type de retour de tableau ayant une longueur spécifique (par ex. func f() [n]int , n est une constante) et ce tableau contiendra n valeurs (elles seront mises à zéro) même si la fonction n'écrit jamais rien dans ce tableau.

5voto

ASHWIN RAJEEV Points 130

Vous pouvez utiliser la fonction intégrée fournie par Golang

len()

Il vous aidera à trouver facilement si une tranche est vide ou non.

if len( yourFunction() ) == 0 {
    // It implies that your array is empty.
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X