尝试为 map 的每个部分创建一个 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
]]
上面是映射,我想尝试为 ipv4s
中的每个值创建一个 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)
}
}
}
}
最佳答案
Effective Go完成 go 教程后,它是一个很好的资源。 那里还描述了如何迭代 slice :
for key, value := range json_map {
// ...
}
或者如果您不需要 key :
for _, value := range json_map {
// ...
}
如果它是一片 map ,您可能必须嵌套两个循环:
for i := range json_map {
for _, ip := range json_map[i]["ipv4s"] {
// ...
}
}
关于 map 某部分的Golang for循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29583841/