strings.Split函数永远不会返回nil或零长度的切片。

huangapple go评论111阅读模式
英文:

strings.Split never returns nil or zero length slice?

问题

这是我在Go语言中的一段代码:

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

我测试了一下,似乎ips变量永远不会是nil。例如,一个空字符串会产生一个空字符串的切片(长度为1)。

你认为我可以移除这个if块吗?

英文:

Here is a piece of my code in Go

ips := strings.Split(IP, &quot;,&quot;)
if len(ips) &lt; 1 {
	return fmt.Errorf(&quot;&#39;%v&#39; ip is wrong&quot;, ips)
}

I tested this and it seems that ips variable can never be nil. For example, an empty string produces a slice of empty string (length 1).

Do you think I can remove the if block?

答案1

得分: 3

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

是否可以移除 if 块取决于你的代码是否在 len(ips) < 2 的情况下会出问题。如果没有问题,你可以安全地移除 if 块。

然而,如果你只对 ips[1] 感兴趣,那么你肯定需要先进行检查。

英文:

You are right: strings.Spit() will never return a nil value. The result will be of type []string with at least one element containing the given string.

Whether you can remove the if block depends: Does your code have a problem if len(ips) &lt; 2? If it does not you can safely remove the if block.

If however e.g. you are only interested in ips[1] then you definitely need to check first.

huangapple
  • 本文由 发表于 2017年8月2日 17:50:45
  • 转载请务必保留本文链接:https://go.coder-hub.com/45457397.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定