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