【发布时间】:2016-03-08 19:39:15
【问题描述】:
我刚开始学习 golang,遇到了一些很奇怪的事情。当您从对 strings.Split 的调用中返回一个空数组时,它的长度为 1。
例子
package main
import (
"fmt"
"strings"
)
func main() {
test := strings.Split("", ",")
fmt.Println(test)
fmt.Println(len(test))
}
这个输出:
[]
1
这是为什么?如果这是预期的行为,那么检查数组是否为空的正确方法是什么?
谢谢
【问题讨论】:
-
因为数组不为空。它的第一个元素是一个空字符串
""。 -
在这种情况下,尝试使用“%#v”格式字符串的 fmt.Printf 非常有用,因为它会打印出该值的确切 Go 表示。在这种情况下。
fmt.Printf("%#v\n",test)打印[]string{""},这表明切片不是空的,而是包含一个空字符串。 -
谢谢,我会记住的,以备日后使用。
-
@JoachimIsaksson 我不明白为什么长度会是 2。你能解释一下吗?我已经打印了长度。它显示长度为 ONE。
标签: go