练习:Stringer
通过让 IPAddr 类型实现 fmt.Stringer 来打印点号分隔的地址。
例如,IPAddr{1, 2, 3, 4} 应当打印为 “1.2.3.4”。
ps: 看到好多用ip[0] + ‘.’ + ip[1]… 这样子解题的,这些人铁定有点问题。。。
package main
import "fmt"
import "strconv"
type IPAddr [4]byte
func (ip IPAddr)String() string {
var s string
// 数组转字符串拼接
for _, v := range ip {
s += strconv.Itoa(int(v)) + "."
}
// 利用切片删除最后一个字符「.」
s = s[:len(s) - 1]
return s
}
// TODO: 给 IPAddr 添加一个 "String() string" 方法
func main() {
hosts := map[string]IPAddr{
"loopback": {127, 0, 0, 1},
"googleDNS": {8, 8, 8, 8},
}
for name, ip := range hosts {
fmt.Printf("%v: %v\n", name, ip.String())
}
}