實現由四個字節數組組成的類型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 回答

開滿天機
TA貢獻1786條經驗 獲得超13個贊
添加這個方法:
func (a IPAddr) String() string { return fmt.Sprintf("%d.%d.%d.%d", a[0], a[1], a[2], a[3]) }

德瑪西亞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)
? ? }
}
這打?。?/p>
loopback: 127.0.0.1
googleDNS: 8.8.8.8
- 3 回答
- 0 關注
- 185 瀏覽
添加回答
舉報
0/150
提交
取消