Я довольно новичок в Go, но очень стараюсь ..golang, Как подсчитать элементы в интерфейсе типа структуры {}?
Я пытаюсь написать некоторый логик, который должен проверить, является ли атрибут struct состоящим только из одного элемента, или первый элемент имеет только один ребенок.
Главная структура такова:
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"
),
)
),
);
в stuct ChartOptions
я разобрать запрос JSON от POST. 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 элемент в ней, или любое количество элементов в любом количестве источников.
"charts" : { "noagg": [ { "name": "HOLD", "type": "line" } ] }
or
"charts" : { "noagg": [ { "name": "HOLD", "type": "line" } , { "name": "TDD", "type": "line" } , { "name": "SVO", "type": "line" } ] }
из задних, это и есть элементы JSON, что приходит идти сценарий, и я разобрать их в интерфейсе {}. Когда я попытался использовать len()
, Go сказал, что я не могу использовать его на интерфейсе.
Какова наилучшая практика для работы с количеством элементов и какой лучший способ достичь такой проверки?
попробуйте использовать пакет 'reflect' – sfault
можете ли вы привести несколько примеров? – Altenrion
Не анализируйте '' '' terface {} '(который вы не должны использовать, если новый для Go в любом случае), но в какую-то подходящую структуру с noagg-срезом и сделать' len' на этом фрагменте. – Volker