我最近发现了以下代码:
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
示例中有一个)?
对于数组或切片文字,索引值必须是常量.来自"复合文字"的文档
对于数组和切片文字,以下规则适用:
每个元素都有一个关联的整数索引,标记其在数组中的位置.
带键的元素使用键作为索引; 键必须是常量整数表达式.
没有键的元素使用前一个元素的索引加一个.如果第一个元素没有键,则其索引为零.
示例中的文字字符是无类型常量,恰好被编写为单个符文文字.如果要将任何这些值分配给变量以用作索引,则代码将无法编译.