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

}

    }
}

图片转代码服务由CSDN问答提供 功能建议

我刚接触Golang: 这些是我定义的结构:

   type名称映射[string] Info 
 
type信息结构{
地址字符串`json:“ addresses”`
主机映射[string]服务器`json:“ host”`
} 
 
type 服务器结构{
 Ipaddress字符串`json:“ ip”`
状态字符串`json:“ status”`
} 
 
var结果名称
   
 
 

在解组Json之后,我得到:

  result = [
 user1:{
 192.168.98.0/26
 map [
 xx.user1.domain.com:  {192.168.98.1好} 
 xx.user1.domain.com:{192.168.98.3好} 
 xx.user1.domain.com:{192.168.98.4错误} 
] 
} 
 user2:{\  n 192.168.99.0/26
映射[
 xx.user2.domain.com:{192.168.99.1好} 
] 
} 
] 
   
 
 <  p>如何在此Json范围内获取特定用户的status ==“ good”的ipaddress  ? 
 
 

我正在尝试这样做:

  for j,_:= range result [“ user1”]。服务器{  
如果为:= result [“ user1”]。Servers [j]);  a ==“ good” {
 //问题在这里,我不确定如何进一步扫描ip和状态
 //做点事
   
 
 

}

 } 
} 
   
 
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

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
            }
        }
    }
    
    打赏 评论

相关推荐 更多相似问题