类型接口{}不支持索引

时间:2019-03-27 16:29:54

标签: go

我想从OR获取值。 我已经尝试过bid,但是没有用。

当我尝试时,它说:

  

“接口转换:接口{}是[]接口{},而不是map [string]接口{}”

请帮助我...

这是我的代码。

data.(map[string]interface{})

tooltip

1 个答案:

答案 0 :(得分:3)

您需要类型断言 bid, ok := data["bids"].([]interface{})
参见:Explain Type Assertions in Go

尝试一下:

package main

import (
    "encoding/json"
    "fmt"
    "io/ioutil"
    "log"
    "net/http"
)

func main() {
    url := "https://api.binance.com/api/v1/depth?symbol=RENBTC"
    a, err := http.Get(url)
    if err != nil {
        log.Fatal(err)
    }

    buf, err := ioutil.ReadAll(a.Body)
    if err != nil {
        log.Fatal(err)
    }

    var data map[string]interface{}
    err = json.Unmarshal([]byte(buf), &data)
    if err != nil {
        log.Fatal(err)
    }

    bid, ok := data["bids"].([]interface{})
    if !ok {
        log.Fatal("not ok")
    }

    s, ok := bid[0].([]interface{})
    if !ok {
        log.Fatal("not ok")
    }
    fmt.Println(s)
}

输出:

[0.00000603 5122.00000000]