如何检查空切片?
How do I check for an empty slice?
我正在调用一个函数,如果没有值,return是一个空数组。
当我这样做时它不起作用:
if r == [] {
fmt.Println("No return value")
}
我正在使用的解决方法是:
var a [0]int
if r == a {
fmt.Println("No return value")
}
但是声明一个变量只是为了检查 return 值似乎不对。执行此操作的更好方法是什么?
len()
returns 切片或数组中的元素数。
假设 whatever()
是你调用的函数,你可以这样做:
r := whatever()
if len(r) > 0 {
// do what you want
}
或者如果您不需要这些物品
if len(whatever()) > 0 {
// do what you want
}
您可以只使用 len
功能。
if len(r) == 0 {
fmt.Println("No return value")
}
尽管由于您使用的是数组,[0]int
类型的数组(大小为 0 的 int 数组)不同于 [n]int
(n 大小为 n 的 int 数组)并且不是相互兼容。
如果您有一个 return 具有不同长度的数组的函数,请考虑使用切片,因为只能使用具有特定长度的数组 return 类型声明函数(例如 func f() [n]int
, n
是一个常量)并且该数组将包含 n 个值(它们将归零),即使该函数从未向该数组写入任何内容。
您可以使用Golang提供的内置函数
len()
它可以帮助您轻松找到切片是否为空。
if len( yourFunction() ) == 0 {
// It implies that your array is empty.
}
我正在调用一个函数,如果没有值,return是一个空数组。
当我这样做时它不起作用:
if r == [] {
fmt.Println("No return value")
}
我正在使用的解决方法是:
var a [0]int
if r == a {
fmt.Println("No return value")
}
但是声明一个变量只是为了检查 return 值似乎不对。执行此操作的更好方法是什么?
len()
returns 切片或数组中的元素数。
假设 whatever()
是你调用的函数,你可以这样做:
r := whatever()
if len(r) > 0 {
// do what you want
}
或者如果您不需要这些物品
if len(whatever()) > 0 {
// do what you want
}
您可以只使用 len
功能。
if len(r) == 0 {
fmt.Println("No return value")
}
尽管由于您使用的是数组,[0]int
类型的数组(大小为 0 的 int 数组)不同于 [n]int
(n 大小为 n 的 int 数组)并且不是相互兼容。
如果您有一个 return 具有不同长度的数组的函数,请考虑使用切片,因为只能使用具有特定长度的数组 return 类型声明函数(例如 func f() [n]int
, n
是一个常量)并且该数组将包含 n 个值(它们将归零),即使该函数从未向该数组写入任何内容。
您可以使用Golang提供的内置函数
len()
它可以帮助您轻松找到切片是否为空。
if len( yourFunction() ) == 0 {
// It implies that your array is empty.
}