5

In the following method, I attempted to redefine the string method on the IPAddr type by appending bytes to an array of string

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

cannot use i (type byte) as type string in append

playground

2
  • 1
    The error is pretty clear, IMHO. What part of it do you not understand? Commented May 28, 2018 at 14:23
  • @Biffen, I do understand the error. However, I wonder how to convert the byte to a string Commented May 28, 2018 at 14:24

1 Answer 1

15

Since your type is an array with a small length, so I would recommend just building the string without ranging over the elements:

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

If you want to implement your solution by joining the string slice, you need to convert the bytes to their decimal representation using the strconv package:

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, ".")
}
Sign up to request clarification or add additional context in comments.

1 Comment

Yes, it could be an option. But I do wonder, how one will go about converting byte array to a string array

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.