Skip to content

Latest commit

 

History

History
22 lines (13 loc) · 1.95 KB

hw8.md

File metadata and controls

22 lines (13 loc) · 1.95 KB

Функция interfaсe2struct

i2s - interface to struct. Функция, которая заполняет значения структуры из map[string]interface{} и подобных - того что получается, если распаковать json в interface{} (см. пример в json/dynamic.go)

Задание на работу с рефлексией.

Не смотря на некую мудрённость на первый взгляд - рефлексия применяется очень часто. Понимать как она работает и как вам с ней работать очень пригодится в дальнейшем.

Реализация занимает 80-100 строк кода

Из типов данных достаточно предусмотреть те, что есть в тесте.

Запускать go test -v

Код писать в файле i2s.go

Подсказки:

  • Все нужные вам функции есть в пакете reflect - https://golang.org/pkg/reflect/ - внимательно читайте документацию
  • json распаковывает int во float. Это указано в документации, не бага. В данном случае будет корректно приводить к инту, если нам встретился флоат
  • Проверяйте всегда что вам приходит на вход. И смотрите, что вы передаёте в функцию (да, рекурсия тут себя хорошо показывает) не reflect.Value, а именно оригинальные данные, до который вы доковырялись через нужные методы рефлекта
  • Если вы в функции используете какие-то имена структур, которые встречаются в стесте - это не правильно