web-dev-qa-db-fra.com

Comment vérifier une tranche 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")            
}

Le travail que j'utilise est:

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 faire cela?

36
Kshitiz Sharma

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

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

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

ou si vous n'avez pas besoin des objets

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

Vous pouvez simplement utiliser la fonction len.

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

Bien que depuis que vous utilisez des tableaux, un tableau de type [0]int (un tableau d'int de taille 0) est différent de [n]int (n un tableau d'int de taille n) et n'est pas compatible les uns avec les autres.

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

11
abhink

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

len ()

Cela vous aidera à trouver facilement une tranche vide ou non.

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