为了账号安全,请及时绑定邮箱和手机立即绑定

Go 中如何将字节数组转换为字符串数组?

Go 中如何将字节数组转换为字符串数组?

Go
子衿沉夜 2023-07-26 13:11:50
实现由四个字节数组组成的类型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])
}


查看完整回答
反对 回复 2023-07-26
?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

string(b)尝试strconv.Itoa(int(b))将数值转换为字符串,而不是。



查看完整回答
反对 回复 2023-07-26
?
德玛西亚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


查看完整回答
反对 回复 2023-07-26
  • 3 回答
  • 0 关注
  • 148 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信