dongpo7467 2017-07-25 20:48
浏览 30
已采纳

如何在golang中的嵌套结构范围内?

I am new to Golang: These are my defined struct:

type Name map[string]Info

type Info struct {
    Addresses string                             `json:"addresses"`
    Host   map[string]Server                     `json:"host"`
}

type Server struct {
   Ipaddress     string        `json:"ip"`
   Status        string        `json:"status"`
}

var result Name

after unmarshalling Json i get:

result = [
    user1:{
        192.168.98.0/26
        map[
            xx.user1.domain.com:{192.168.98.1 good} 
            xx.user1.domain.com:{192.168.98.3 good} 
            xx.user1.domain.com:{192.168.98.4 Bad}
        ]
    } 
    user2: {
        192.168.99.0/26
        map[
            xx.user2.domain.com:{192.168.99.1 good}
        ]
    }
]

How to range over this Json to get the ipaddress which has a status=="good" for the particular user ?

I am trying to do this way:

  for j , _ := range result["user1"].Servers {
     if a := result["user1"].Servers[j]); a == "good" {
      //Problem is here I am not sure how to further scan the ip and status
      //do something

}

    }
}
  • 写回答

1条回答 默认 最新

  • duanhan5230 2017-07-25 21:41
    关注

    I think you want:

    for _ , i := range result {
        for  _, j := range i.Host {
            if j.Status == "good" {
                server := j.Ip
            }
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?