go常量小知识点

72 阅读1分钟
package main

const code = [][]byte{
	{'M', 'O', 'N', 'A', 'R'},
	{'C', 'H', 'Y', 'B', 'D'},
	{'E', 'F', 'G', 'I', 'K'},
	{'L', 'P', 'Q', 'S', 'T'},
	{'U', 'V', 'W', 'X', 'Z'},
}

const key = []byte = {"PLAYFAIR"}
// 上面两种都会报错
func main() {
	b := code[0][0]
}

上面两种都会报错Const initializer '[][]byte{...}' is not a constant

在Go语言中,多维切片不适用于常量声明。只有基本类型和某些复合类型(如字符串和数组)可以用于常量声明。

如果想要将该代码片段声明为常量,可以使用字符串数组代替切片:

这样,可以将code声明为一个包级变量,并将其初始化为一个字符串数组。然后,可以使用RowCountColumnCount常量来表示行数和列数。