gpt4 book ai didi

golang,如何计算结构类型接口(interface){}中的元素?

转载 作者:IT王子 更新时间:2023-10-29 00:39:23 26 4
gpt4 key购买 nike

我是 Go 的新手,但正在努力..

我正在尝试编写一些逻辑,需要检查结构的属性是否仅由一个元素组成,或者第一个元素是否只有一个子元素。

主要结构是这样的:

type ChartOptins struct {
Filters Filter `json:"filters"`
Charts interface{} `json:"charts"`
}

图表天生就是这样的结构数组的组合:

    $filters = array(
"filters" => array(
"DayStart" => "12-01-2015",
"DayEnd" => "12-05-2015",
"TimePeriods"=> array(
array("qqq","www"),
),
"lines" => array(
"first","avokado","drunduki"
)

),
"charts" => array(
"noagg" => array(
array(
"name" => "HOLD",
"type" => "line"
),
array(
"name" => "UKKR",
"type" => "line"
),
array(
"name" => "SVO",
"type" => "line"
),
),
"oracle" => array(
array(
"name" => "TDD",
"type" => "line"
),
)
),
);

ChartOptions 结构中,我从 POST 请求中解析 JSON。 JSON 看起来像这样:

{ "filters": { "dayStart": "11-10-2015", "dayEnd": "21-10-2015", "timePeriods": [ [ "qqq", "www" ] ], "lines": [ "first", "avokado", "drunduki" ] }, "charts": { "noagg": [ { "name": "HOLD", "type": "line" } ] } }

因此,charts 中只能有 1 个源和 1 个元素,或者任意数量的源中的任意数量的元素。

"charts" : { "noagg": [ { "name": "HOLD", "type": "line" } ] }
or
"charts" : { "noagg": [ { "name": "HOLD", "type": "line" } , { "name": "TDD", "type": "line" } , { "name": "SVO", "type": "line" } ] }

当然,这是 go 脚本来的 JSON 元素,我将它们解析为 interface{}。当我尝试使用 len() 时,Go 说我不能在接口(interface)上使用它..

处理元素数量的最佳实践是什么,实现这种检查的最佳方法是什么?

最佳答案

这里是一个保持接口(interface)的例子: https://play.golang.org/p/Eu6Hj6ddSE

只需更改: Charts 界面{} Charts []interface{}如果 v 是你的 ChartOptins 那么让你的 len 在接口(interface)上使用 .() 运算符

fmt.Println(len(v.Charts.([]interface{})))

关于golang,如何计算结构类型接口(interface){}中的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35291429/

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