gpt4 book ai didi

dictionary - 项目列表的 Golang 类型断言

转载 作者:数据小太阳 更新时间:2023-10-29 03:22:15 31 4
gpt4 key购买 nike

我调用一个 API,它返回一个字典( map ),其中包含一个项目列表作为值。

例如:-

result= {'outputs':[{'state':'md','country':'us'}, {'state':'ny','country':'ny'}]}

以上数据是python中数据的表示方式。

在 Python 中,我直接使用 result['outputs'][0] 来访问列表中的元素列表。

在 Golang 中,相同的 API 返回数据,但是当我尝试访问数据作为结果['outputs'][0]

得到这个错误:-

invalid operation: result["outputs"][0] (type interface {} does not support indexing)

看起来我需要做一个类型转换,我应该用什么来类型转换,这个我试过了

result["outputs"][0].(List)
result["outputs"][0].([])

但两者都会给我一个错误。

我检查了返回项目的类型,就是它 - []interface{}

我的类型转换应该是什么?

最佳答案

你写的值的类型是[]interface{},所以然后做一个type assertion断言该类型。

另请注意,您首先必须输入断言,然后再输入索引,例如:

outputs := result["outputs"].([]interface{})

firstOutput := outputs[0]

另请注意,firstOutput 的(静态)类型将再次为 interface{}。要访问其内容,您需要另一种类型断言,很可能是 map[string]interface{}map[interface{}]interface{}

如果可以,请使用结构对数据建模,这样您就不必执行这种“毫无意义的类型断言”。

另请注意,有第 3 方库支持在动态对象(例如您的对象)中轻松“导航”。首先,有 github.com/icza/dyno (披露:我是作者)。

使用 dyno,获得第一个输出如下:

firstOutput, err := dyno.Get(result, "outputs", 0)

获取第一个输出的国家:

country, err := dyno.Get(result, "outputs", 0, "country")

您还可以“重用”以前查找的值,如下所示:

firstOutput, err := dyno.Get(result, "outputs", 0)
// check error
country, err := dyno.Get(firstOutput, "country")
// check error

关于dictionary - 项目列表的 Golang 类型断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51803215/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com