实现由四个字节数组组成的类型String()的方法。IPAddr到目前为止我已经尝试过:package mainimport ( "fmt" "strings")type IPAddr [4]bytefunc (ipaddr IPAddr) String() string { ipaddrStrings := make([]string, 4) for i, b := range ipaddr { ipaddrStrings[i] = string(b) } return strings.Join(ipaddrStrings, ".")}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) }}然而,这打印loopback: ...googleDNS:.这会导致cannot convert ipaddr (type IPAddr) to type string我怎样才能完成这个练习?
3 回答
![?](http://img1.sycdn.imooc.com/5333a0350001692e02200220-100-100.jpg)
开满天机
TA贡献1786条经验 获得超13个赞
添加这个方法:
func (a IPAddr) String() string { return fmt.Sprintf("%d.%d.%d.%d", a[0], a[1], a[2], a[3]) }
![?](http://img1.sycdn.imooc.com/5458453d0001cd0102200220-100-100.jpg)
德玛西亚99
TA贡献1770条经验 获得超3个赞
我独立地提出了与bserdar概述相同的解决方案:
package main
import (
"fmt"
"strconv"
"strings"
)
type IPAddr [4]byte
func (ipaddr IPAddr) String() string {
ipaddrStrings := make([]string, 4)
for i, b := range ipaddr {
ipaddrStrings[i] = strconv.Itoa(int(b))
}
return strings.Join(ipaddrStrings, ".")
}
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)
}
}
这打印:
loopback: 127.0.0.1
googleDNS: 8.8.8.8
- 3 回答
- 0 关注
- 148 浏览
添加回答
举报
0/150
提交
取消