我怎么检查一个空的切片?

我正在调用一个函数,如果没有值,它将返回一个空数组。

当我这样做的时候,它不起作用:

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

我使用的方法是:

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

但是仅仅为了检查返回值而声明一个变量似乎是不正确的。有什么更好的方法来做到这一点呢?

148949 次浏览

len() 返回一个片或数组中的元素数。

假设 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 的 int 数组)不同,并且彼此不兼容。

如果有一个函数返回不同长度的数组,可以考虑使用切片,因为函数只能用具有特定长度的数组返回类型来声明(例如 func f() [n]intn是一个常量) ,并且该数组中将有 n 个值(它们将被归零) ,即使该函数从未写任何东西到该数组中。

可以使用 Golang 提供的内置函数

len()

它将帮助你很容易地找到一片是空的或不是。

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