去纵梁运动的麻烦

对于 Go 之旅中的 Stringers 练习:我为两种不同格式的打印获得了两种不同的输出。我唯一改变的是格式动词。他们是 %v 和 %d。理论上,它们会给出相同的输出。然而输出的顺序也改变了,这太奇怪了。对此有什么想法吗?下面是我的代码:


package main


import "fmt"


type IPAddr [4]byte


// TODO: Add a "String() string" method to IPAddr.

func (a IPAddr)String() string{

    // Here is what I changed

    return fmt.Sprintf("%d.%d.%d.%d",a[0],a[1],a[2],a[3])

}


func main() {

    addrs := map[string]IPAddr{

        "loopback":  {127, 0, 0, 1},

        "googleDNS": {8, 8, 8, 8},

    }

    for n, a := range addrs {

        fmt.Printf("%v: %v\n", n, a)

    }

}

输出:


谷歌DNS:8.8.8.8


环回:127.0.0.1


package main


import "fmt"


type IPAddr [4]byte


// TODO: Add a "String() string" method to IPAddr.

func (a IPAddr)String() string{

    // Here is what I changed

    return fmt.Sprintf("%v.%v.%v.%v",a[0],a[1],a[2],a[3])

}


func main() {

    addrs := map[string]IPAddr{

        "loopback":  {127, 0, 0, 1},

        "googleDNS": {8, 8, 8, 8},

    }

    for n, a := range addrs {

        fmt.Printf("%v: %v\n", n, a)

    }

}

输出:


环回:127.0.0.1


谷歌DNS:8.8.8.8


输出的顺序也发生了变化。


幕布斯7119047
浏览 203回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go