Как проверить пустой кусочек?

Я вызываю функцию, которая возвращает пустой массив, если нет значений.

Когда я это делаю, это не работает:

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

Работа, которую я использую, это:

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

Но объявление переменной для проверки возвращаемого значения кажется неправильным. Какой лучший способ сделать это?

Ответы

Ответ 1

len() возвращает количество элементов в срезе или массиве.

Предполагая, что whatever() - это функция, которую вы вызываете, вы можете сделать что-то вроде:

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

или если вам не нужны элементы

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

Ответ 2

Вы можете просто использовать функцию len.

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

Хотя, поскольку вы используете массивы, массив типа [0]int (массив int с размером 0) отличается от [n]int (n массива int с размером n) и несовместим между собой.

Если у вас есть функция, которая возвращает массивы с разной длиной, рассмотрите использование срезов, потому что функция может быть объявлена ​​только с типом возвращаемого массива, имеющим определенную длину (например, func f() [n]int, n является константой) и этот массив будет иметь n значений (они будут обнулены), даже если функция никогда ничего не пишет в этот массив.