我有一个具有以下代码的函数的情况:
func halfMatch(text1, text2 string) []string {
...
if (condition) {
return nil // That's the final code path)
}
...
}
Run Code Online (Sandbox Code Playgroud)
正在返回[]string(nil)而不是零.起初,我认为可能nil在具有特定返回类型的函数中返回将仅返回该类型的零值实例.但后来我尝试了一个简单的测试,事实并非如此.
有谁知道为什么会nil返回一个空字符串切片?
Ste*_*erg 14
Nil不是一种类型.它描述了映射,chans,指针,函数,切片和接口的零值.
当你在你的程序中加入"nil"时,go会根据上下文给它一个类型.在大多数情况下,您永远不需要明确键入您的nil.这也不例外,编译器知道它必须是[]字符串(nil),因为返回的类型是[] string.
零字符串切片是没有后备阵列且长度/容量为零的切片.您可以将它与文字"nil"进行比较,并获得其长度和容量.它是一个[]字符串,只是空的.如果你希望有一个非空的[]字符串,请返回[] string {}.这将创建一个支持数组(长度为零)并使其不再等于nil.