首页 > 解决方案 > golang中括号和花括号的区别

问题描述

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

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

标签: go

解决方案


原因是类型转换切片文字之间的区别。

_ = []byte("Hi!")         // Converts a string literal to a []byte.
_ = []byte{'H', 'i', '!'} // Initializes a []byte literal

您的第二个示例[]byte{"H"}无法编译,因为它是用于代替rune literal"H"字符串文字,它类似于尝试将字符串分配给字节类型的变量:

var y byte = 'H' // OK
var x byte = "H" // ERROR: cannot use "H" (type string) as type byte in assignment

推荐阅读