我遇到的情况是带有以下代码的函数:func halfMatch(text1, text2 string) []string { ... if (condition) { return nil // That's the final code path) } ...}返回[]string(nil)而不是零。起初,我认为也许返回nil具有特定返回类型的函数只会返回该类型的零值实例。但是后来我尝试了一个简单的测试,事实并非如此。有人知道为什么会nil返回一个空的字符串切片吗?
3 回答
倚天杖
TA贡献1828条经验 获得超3个赞
Nil不是类型。它是对映射,通道,指针,函数,切片和接口的零值的描述。
当您在程序中添加“ nil”时,go会根据上下文为其提供类型。在大多数情况下,您无需显式键入nil。这也不例外,编译器知道它必须是[] string(nil),因为返回的类型是[] string。
无字符串切片是没有后备数组且长度/容量为零的切片。您可以将其与文字“ nil”进行比较,并获得其长度和容量。它是一个[]字符串,只是空的。如果您希望有一个非零的[]字符串,请返回[] string {}。这将创建一个后备数组(长度为零),并使其不再等效于nil。
- 3 回答
- 0 关注
- 217 浏览
添加回答
举报
0/150
提交
取消