Golang用于地图的某些部分的循环
正在尝试为映射的每个部分创建for循环Golang用于地图的某些部分的循环,go,Go,正在尝试为映射的每个部分创建for循环 map[ asn:AS10 time:1.428790768e+09 ipv4s:[ 68.114.75.0/24 216.215.56.0/22 216.215.60.0/22] ipv6s:[ 2607:f3f8::/32 ]] 上面是映射,我想尝试为IPV4中的每个值创建一个for循环 我已经尝试过了,但显然我做得不对,因为这仅仅是基于我的php知识 for json_map["ipv4s"
map[
asn:AS10
time:1.428790768e+09
ipv4s:[
68.114.75.0/24
216.215.56.0/22
216.215.60.0/22]
ipv6s:[
2607:f3f8::/32
]]
上面是映射,我想尝试为IPV4中的每个值创建一个for循环
我已经尝试过了,但显然我做得不对,因为这仅仅是基于我的php知识
for json_map["ipv4s"]{
//whatever
}
PHP版本,如果有人需要一个示例,而不是我试图解释:
foreach($obj->ipv4s as $value) {
echo $value; // return an ip
}
更新
package main
import (
"fmt"
"net/http"
"os"
"encoding/json"
)
func main() {
response, err := http.Get("https://www.enjen.net/asn-blocklist/index.php?asn=" + os.Args[1] + "&type=json_split&api=1")
if err != nil {
fmt.Printf("%s", err)
os.Exit(1)
} else {
defer response.Body.Close()
dec := json.NewDecoder(response.Body)
if dec == nil {
panic("Failed to start decoding JSON data")
}
json_map := make(map[string]interface{})
err = dec.Decode(&json_map)
if err != nil {
panic(err)
}
fmt.Printf("%v\n", json_map)
for i := range json_map {
for _, ip := range json_map[i]["ipv4s"] {
fmt.Printf(ip)
}
}
}
}
是一个很好的来源,一旦你完成了教程去。
这里还描述了如何迭代切片:
for key, value := range json_map {
// ...
}
或者,如果您不需要钥匙:
for _, value := range json_map {
// ...
}
如果是贴图切片,则可能必须嵌套两个循环:
for i := range json_map {
for _, ip := range json_map[i]["ipv4s"] {
// ...
}
}
回答得很好,谢谢。我来看看有效围棋。一个问题是,我得到了一个无效的操作:接口{}中的json_map[i][ipv4s]类型不支持索引。我在上读了一遍,但我无法理解答案。如果我不知道基础映射是什么结构,我就无法回答。我如何才能自己找到它?那么,带asn、时间、ipv4s的映射在哪里,。。。如何将其插入到go to iterate over中?我通过http.get检索它。我已经用完整的源代码更新了这篇文章。每当有人使用接口{}获取JSON数据时,一只小猫就会死去。使用RawMessage。2.对于i:=range json_-map{for,ip:=range json_-map[i][ipv4s]{fmt.Printfip}->madness,两个循环从一个映射中获取一个元素。难以置信