Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Golang用于地图的某些部分的循环_Go - Fatal编程技术网

Golang用于地图的某些部分的循环

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"

正在尝试为映射的每个部分创建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"]{
   //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,两个循环从一个映射中获取一个元素。难以置信