我最近找到了以下代码:
var noEscape = [256]bool{
'A': true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
'a': true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
'0': true, true, true, true, true, true, true, true, true, true,
'-': true,
'.': true,
'_': true,
'~': true,
}
我了解默认情况下,此[N]bool
初始化为N false
(零)。如果索引后跟冒号,则可以从索引(包括)中定义值。在哪里描述?哪些类型可以用作索引值(示例中有char
)?
答案 0 :(得分:6)
对于数组或切片文字,索引值必须是常量。来自"composite literals"
上的文档对于数组和切片文字,以下规则适用:
- 每个元素都有一个关联的整数索引,用于标记其在数组中的位置。
- 带键的元素使用键作为索引;键必须是一个常量整数表达式。
- 没有键的元素使用前一个元素的索引加一个。如果第一个元素没有键,则其索引为零。
示例中的文字字符是无类型constants,它恰好被编写为单个符文文字。如果要将这些值中的任何一个赋值给变量以用作索引,则代码将无法编译。