2015-02-05 88 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

輸出的順序也發生了變化。

回答