У меня есть 15 пользовательских типов в этом приложении, и обработка, которую я хочу сделать для них, на самом деле очень общая для них всех.
В каждом случае мне нужно перебирать фрагмент любого типа, с которым я работаю.
интерфейс - это то, что в настоящее время передается, но он, конечно, не должен оставаться таким
У меня есть следующий код:
func ProcessSlice(in interface{}){
switch reflect.TypeOf(p.in).Kind() {
case reflect.Slice:
s := reflect.ValueOf(p.in)
for i := 0; i < s.Len(); i++ {
fmt.Println(reflect.ValueOf(p.in))
}
}
}
fmt.Println существует для отладки, и я получаю следующий вид вывода:
[map[_Id:4K7qx_mUSbV-----------== name:<name ommited> _class:basic_organization] map[_Id:4K7qx_mUnvB-----------== name:<name omitted> _class:basic_organization]]
Мой настоящий вопрос здесь, скажем, у меня есть типы:
MyCustomStructA,
MyCustomeStructB
и я врываюсь в эту функцию с частичкой любого из них, как я могу оказаться в этом цикле, работая с реальными элементами структуры? Потому что в данный момент у меня появляется карта, а здесь я этого не хочу.