web-dev-qa-db-ja.com

空のスライスを確認するにはどうすればよいですか?

値がない場合に空の配列を返す関数を呼び出しています。

これを行うと動作しません:

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

私が使用している回避策は次のとおりです。

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

しかし、戻り値をチェックするためだけに変数を宣言するのは正しくないようです。これを行うためのより良い方法は何ですか?

46
Kshitiz Sharma

len() は、スライスまたは配列内の要素の数を返します。

whatever()が呼び出す関数であると仮定すると、次のようなことができます。

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

またはアイテムが必要ない場合

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

len関数のみを使用できます。

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

配列を使用しているため、タイプ[0]int(サイズ0のint配列)の配列は[n]int(サイズnのn配列)とは異なり、互いに互換性がありません。

異なる長さの配列を返す関数がある場合は、スライスの使用を検討してください。関数は、特定の長さの配列戻り型でのみ宣言できます(例:func f() [n]intnは定数です)関数がその配列に何も書き込まない場合でも、配列にはn個の値があります(ゼロになります)。

12
abhink

Golangが提供する組み込み関数を使用できます

len()

スライスが空かどうかを簡単に見つけるのに役立ちます。

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