golang中括号和花括号的区别

a := []byte("H") //works
a := []byte{"H"} //does not compile

上面使用的 () 和 {} 之间的概念区别是什么?


尚方宝剑之说
浏览 109回答 2
2回答

守着一只汪

原因是类型转换和切片字面量的区别。_ = []byte("Hi!")         // Converts a string literal to a []byte._ = []byte{'H', 'i', '!'} // Initializes a []byte literal您的第二个示例[]byte{"H"}无法编译,因为"H"它是一个字符串文字,用于代替符文文字,它类似于尝试将字符串分配给字节类型的变量:var y byte = 'H' // OKvar 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",".."} // worksf := []string{1,2,4} // fails because the datatype is wrong
打开App,查看更多内容
随时随地看视频慕课网APP