英文:
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, ",")
if len(ips) < 1 {
return fmt.Errorf("'%v' ip is wrong", 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) < 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.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论