将字节数组转换为字符串数组

edk*_*ked 4 go

在下面的方法中,我尝试通过将字节附加到字符串数组来重新定义 IPAddr 类型的字符串方法

type IPAddr [4]byte

func (ip IPAddr) String() string {
    var s []string
    for _, i := range ip {
        s = append(s, i)
    }
    return fmt.Sprintf(strings.Join(s, "."))
}
Run Code Online (Sandbox Code Playgroud)

不能使用 i(类型字节)作为附加的类型字符串

操场

Tim*_*per 11

由于您的类型是一个长度很小的数组,所以我建议只构建字符串而不覆盖元素:

func (ip IPAddr) String() string {
    return fmt.Sprintf("%d.%d.%d.%d", ip[0], ip[1], ip[2], ip[3])
}
Run Code Online (Sandbox Code Playgroud)

https://play.golang.org/p/nOSj-EyXuyf

如果你想通过加入字符串切片来实现你的解决方案,你需要使用strconv包将字节转换为十进制表示:

func (ip IPAddr) String() string {
    s := make([]string, 0, len(ip))
    for _, i := range ip {
        s = append(s, strconv.Itoa(int(i)))
    }
    return strings.Join(s, ".")
}
Run Code Online (Sandbox Code Playgroud)

  • 是的,这可能是一种选择。但我确实想知道,如何将字节数组转换为字符串数组 (2认同)