【问题标题】:Why does an empty array returned from strings.Split have a length of 1 in golang?为什么从strings.Split返回的空数组在golang中长度为1?
【发布时间】: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


【解决方案1】:

正如@u_mulder 在 cmets 中所说,该数组不是空的,因为它包含一个空字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多