为什么golang对字节切片使用括号,对字符串切片使用括号?

Int*_*ist 0 byte go slice

我一直想知道为什么在 golang 中使用括号创建字节片段:

[]byte("foo")
Run Code Online (Sandbox Code Playgroud)

使用括号表示法创建字符串切片时:

[]string{"foo", "bar"}
Run Code Online (Sandbox Code Playgroud)

使用括号是否只是因为表达式需要单个值(例如 string "foo"),因此括号被用作“分组”语法?

注意:使用“组”或“分组”来定义这种行为对我来说很可能是不正确的,但我没有更好的词可以使用。

我这么认为是因为 golang 在分组意义上也使用括号来处理诸如类型断言i.(T)和指针取消引用之类的事情(*p).z

Shu*_*rma 6

你错了。

  • []byte("any_string")实际上是从stringtype 到[]byte(byte 的切片类型) 的类型转换,其返回类型是[]byte.
  • []string{"string0", "string1", ...}实际上是一个sliceof strings "string0", "string1", ...