diff --git a/structtags/README.md b/structtags/README.md index 430e95a..bb0cf7d 100644 --- a/structtags/README.md +++ b/structtags/README.md @@ -1,6 +1,6 @@ # structtags -Ускорьте функцию `Unpack()`, про которую рассказывали на лекции (https://p.go.manytask.org/08-reflect/lecture.slide#19). +Ускорьте функцию `Unpack()`. Ваша функция должна работать быстрее, чем бейзлайн + 20%. ``` diff --git a/structtags/structtags.go b/structtags/structtags.go index 96b0d14..7ef8fb0 100644 --- a/structtags/structtags.go +++ b/structtags/structtags.go @@ -17,6 +17,14 @@ func NewUnpacker() *Unpacker { return &Unpacker{} } +// Функция Unpack присваивает значения параметров из url query в поля переданной структуры. + +// Для этого сначала в первом создается map, +// где ключи -- названия параметров из url query, +// а значения -- "ссылки" на соответствующие поля структуры. + +// В следующем цикле поля структуры заполняются соответствующими +// значениями из url query. func (u *Unpacker) Unpack(req *http.Request, ptr interface{}) error { if err := req.ParseForm(); err != nil { return err