去穿筋运动的麻烦

去穿筋运动的麻烦

对于围棋之旅中的斯金格斯练习:
对于两种不同格式的打印,我得到了两种不同的输出。我唯一改变的是格式动词。他们是%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)
    }
}

输出:

googleDNS: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

googleDNS:8.8.8.8

输出的顺序也已更改。

最佳答案

map 未订购。



[1]https://blog.golang.org/go-maps-in-action#TOC_7.

除了顺序,我没有看到%v%d输出有任何区别。

关于go - 去穿筋运动的麻烦,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28352975/

10-10 17:47