【问题标题】:strings.Split never returns nil or zero length slice?strings.Split 从不返回零或零长度切片?
【发布时间】:2017-08-02 09:50:45
【问题描述】:

这是我在 Go 中的一段代码

ips := strings.Split(IP, ",")
if len(ips) < 1 {
    return fmt.Errorf("'%v' ip is wrong", ips)
}

我对此进行了测试,似乎ips 变量永远不会为零。例如,一个空字符串会产生一个空字符串切片(长度为 1)。

你认为我可以删除 if 块吗?

【问题讨论】:

    标签: go split


    【解决方案1】:

    你是对的:strings.Spit() 永远不会返回 nil 值。结果将是[]string 类型,其中至少有一个元素包含给定的字符串。

    是否可以删除 if 块取决于:如果len(ips) &lt; 2,您的代码是否有问题?如果没有,您可以安全地删除 if 块。

    但是,例如你只对ips[1]感兴趣,那么你一定要先检查一下。

    【讨论】:

    • 我应该完成我的问题“零或零长度切片”如果我运行 strings.Split("", ",") 长度为 1 play.golang.org/p/Kaddfg9CiF
    • 输出切片总是至少有一个元素。这是有道理的,即使您尝试拆分空字符串,函数也会返回带有一个元素的切片 - 空字符串。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-28
    • 1970-01-01
    • 2015-08-28
    • 1970-01-01
    • 1970-01-01
    • 2018-10-22
    • 2020-05-25
    相关资源
    最近更新 更多