Как проверить пустой кусочек?
Я вызываю функцию, которая возвращает пустой массив, если нет значений.
Когда я это делаю, это не работает:
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 значений (они будут обнулены), даже если функция никогда ничего не пишет в этот массив.