a := []byte("H") //works
a := []byte{"H"} //does not compile
在上面的用法中,“()”和“{}”之间的概念差异是什么?
a := []byte("H") //works
a := []byte{"H"} //does not compile
_ = []byte("Hi!") // Converts a string literal to a []byte.
_ = []byte{'H', 'i', '!'} // Initializes a []byte literal
你的第二个示例 []byte{"H"}
编译失败,因为 "H"
是一个 字符串 文字,正在代替一个rune文字,这相当于尝试将字符串分配给一个字节类型的变量:
var y byte = 'H' // OK
var x byte = "H" // ERROR: cannot use "H" (type string) as type byte in assignment
a := []byte("H")
你将字符串"H"
转换为字节数组。a := []byte{"H"}
你定义了一个字节数组并将 "H" 分配为其第一个值,这是无效的。s := []string{"hello","world",".."} // works
f := []string{1,2,4} // fails because the datatype is wrong