【问题标题】:Golang define array of bytes holding single lettersGolang 定义包含单个字母的字节数组
【发布时间】: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 LiteralsArray 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


【解决方案1】:

例如,

package main

import (
    "fmt"
)

func main() {
    var vowels = [...]byte{'a', 'e', 'i', 'o', 'u', 'y'}
    fmt.Printf("%d %c\n", len(vowels), vowels)
}

游乐场:https://play.golang.org/p/Giok8PkpItR

输出:

6 [a e i o u y]

【讨论】:

    猜你喜欢
    • 2021-07-30
    • 1970-01-01
    • 1970-01-01
    • 2017-03-25
    • 2010-12-28
    • 2015-03-28
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    相关资源
    最近更新 更多