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

时间:2018-05-28 14:20:05

标签: 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, "."))
}
  

不能在附加

中使用i(类型字节)作为类型字符串

playground

1 个答案:

答案 0 :(得分:3)

由于你的类型是一个长度很小的数组,所以我建议你只是构建字符串而不是在元素上进行测距:

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

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

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

func (ip IPAddr) String() string {
    var s []string
    for _, i := range ip {
        s = append(s, strconv.Itoa(int(i)))
    }
    return fmt.Sprintf(strings.Join(s, "."))
}