Ich rufe eine Funktion auf, die ein leeres Array zurückgibt, wenn keine Werte vorhanden sind.
Wenn ich das mache, funktioniert es nicht:
if r == [] {
fmt.Println("No return value")
}
Die Arbeit, die ich benutze, ist:
var a [0]int
if r == a {
fmt.Println("No return value")
}
Das Deklarieren einer Variablen nur zur Überprüfung des Rückgabewerts scheint jedoch nicht richtig zu sein. Was ist der bessere Weg, dies zu tun?
r
auch vom Typ wäre,[0]int
aber in diesem Fall würden die beiden (leeren) Arrays immer gleich vergleichen.Antworten:
len()
Gibt die Anzahl der Elemente in einem Slice oder Array zurück.Angenommen,
whatever()
die Funktion, die Sie aufrufen, können Sie Folgendes tun:r := whatever() if len(r) > 0 { // do what you want }
oder wenn Sie die Artikel nicht benötigen
if len(whatever()) > 0 { // do what you want }
quelle
var num []int
, auch die Länge auf Null zurückgibt. dhlen(num) == 0
Sie können einfach die
len
Funktion verwenden.if len(r) == 0 { fmt.Println("No return value") }
Da Sie jedoch Arrays verwenden, unterscheidet sich ein Array vom Typ
[0]int
(ein Array von int mit der Größe 0) von[n]int
(n Array von int mit der Größe n) und ist nicht miteinander kompatibel.Wenn Sie eine Funktion haben , die zurückkehrt Arrays mit unterschiedlichen Längen, betrachten Scheiben verwenden, weil Funktion nur mit einer Reihe Rückgabetyp mit einer spezifischen Länge erklärt werden kann ( zum Beispiel
func f() [n]int
,n
ist eine Konstante) , und dass Anordnung hat n - Werte in ihr (sie‘ Ich werde auf Null gesetzt), auch wenn die Funktion niemals etwas in dieses Array schreibt.quelle
Sie können die eingebaute Funktion von Golang verwenden
Es hilft Ihnen leicht zu finden, ob eine Scheibe leer ist oder nicht.
if len( yourFunction() ) == 0 { // It implies that your array is empty. }
quelle