2015-02-05 38 views
0

对于走在路程中的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) 
    } 
} 

输出:

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

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

回答