Go 围棋练习的麻烦

Go 围棋练习的麻烦,go,format,printf,Go,Format,Printf,对于Go教程中的梯边梁练习: 我得到了两种不同格式的打印输出。我唯一改变的是格式动词。它们是%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 wha

对于Go教程中的梯边梁练习: 我得到了两种不同格式的打印输出。我唯一改变的是格式动词。它们是%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)
    }
}
输出:

谷歌域名: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

谷歌域名:8.8.8.8

输出的顺序也已更改。

映射未排序

当使用范围循环在映射上迭代时,不会指定迭代顺序,也不能保证从一次迭代到下一次迭代的顺序相同[1]

除了顺序之外,我看不出
%v
%d
输出有任何区别。

地图没有顺序

package main

import "fmt"

type IPAddr [4]byte

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

func (ip IPAddr) String() string {
   var s string
   for i:= range ip{
     if(i==0){
      s +=fmt.Sprint(int(ip[i]))
     } else{
        s +="."+fmt.Sprint(int(ip[i]))
     }
  }     

  return s
}
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)
  }
}
当使用范围循环在映射上迭代时,不会指定迭代顺序,也不能保证从一次迭代到下一次迭代的顺序相同[1]


除了顺序之外,我看不出
%v
%d
输出有任何区别。

你能分享一些关于所有这些代码的解释吗?人们正在使用字节数组索引来打印值,我在使用for循环进行迭代和计算答案时做了什么?如果逻辑在数组中的4个以上项目上工作,你能分享一些吗关于所有这些代码的解释?人们正在使用字节数组索引打印值,就像am在使用for循环进行迭代时所做的那样,并在逻辑作用于数组中的4个以上项目时计算答案
package main

import "fmt"

type IPAddr [4]byte

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

func (ip IPAddr) String() string {
   var s string
   for i:= range ip{
     if(i==0){
      s +=fmt.Sprint(int(ip[i]))
     } else{
        s +="."+fmt.Sprint(int(ip[i]))
     }
  }     

  return s
}
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)
  }
}