【发布时间】:2019-06-17 14:33:57
【问题描述】:
我正在尝试定义一个显式固定长度 (duh) 的数组,并在一行中使用值预先填充它。我想出了以下内容(失败了),但在一行中找不到有关如何执行此操作的任何文档。
var vowels [6]byte = {"a","e","i","o","u","y"}
我也不想使用:= 运算符。
ANSWER - @peterSO 的答案衍生,以提高代码的可读性。
var vowels = [6]byte{'a','e','i','o','u','y'}
【问题讨论】:
-
我不想使用多字符串,我只关注单个字符(字母)。无论如何,切片都使用数组,所以这不是必需的吗?
-
至于文档,都在spec中列出,Composite Literals和Array Types下可以看到一些数组示例,它们也都定义了语法。
-
它的可读性要差得多,因为
[10]byte{'a', 'e', 'i', 'o', 'u', 'y'}也是有效的。当你写[6]byte{'a','e','i','o','u','y'}时,我必须仔细计算元音,以确保正好有六个。编写[...]byte{'a', 'e', 'i', 'o', 'u', 'y'}让编译器和计算机进行计数。他们比你我更可靠、更不倦。 -
一个等效的替代方案是
[]byte("aeiouy")。它更简洁但略显不明确。此外,答案应该在答案中,而不是编辑成问题。
标签: arrays go character letter