在下面的方法中,我试图通过将字节附加到字符串数组
来重新定义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(类型字节)作为类型字符串
答案 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, "."))
}