Дополнительные поля в структурах

102 views
Skip to first unread message

Дмитрий Кашковский

unread,
Feb 18, 2015, 4:07:07 PM2/18/15
to gola...@googlegroups.com
Доброго времени суток!
Интересует сабж, например:

// Model Struct
type User struct {
    Id   int
    Name string `orm:"size(100)"`
}

как работает строка `orm:"size(100)"` ? и почему она возможна в структуре?

Alexey Palazhchenko

unread,
Feb 18, 2015, 4:22:28 PM2/18/15
to gola...@googlegroups.com
Привет,

> как работает строка `orm:"size(100)"` ? и почему она возможна в структуре?

Эта строка называется тегом:

A field declaration may be followed by an optional string literal tag, which becomes an attribute for all the fields in the corresponding field declaration. The tags are made visible through a reflection interface and take part in type identity for structs but are otherwise ignored. (https://golang.org/ref/spec#Struct_type)

Пример использования – пакет JSON (https://golang.org/pkg/encoding/json/#Marshal): https://play.golang.org/p/9d11535t4Q

–-–
Алексей “AlekSi” Палажченко

Дмитрий Кашковский

unread,
Feb 18, 2015, 4:41:16 PM2/18/15
to gola...@googlegroups.com
Нашел такой пример, там же: 
https://play.golang.org/p/mQaQcovVvc
Как я понял, доступны тэги только так.
Видимо, нужно изучать рефлексию. 

Спасибо! 

четверг, 19 февраля 2015 г., 0:22:28 UTC+3 пользователь Alexey Palazhchenko написал:

Дмитрий Кашковский

unread,
Feb 20, 2015, 2:15:26 AM2/20/15
to gola...@googlegroups.com
Можете скинуть ссылки, что почитать по рефлексии? 
пока что-то с трудом идет. 

четверг, 19 февраля 2015 г., 0:07:07 UTC+3 пользователь Дмитрий Кашковский написал:

Alexandr Lurye

unread,
Feb 23, 2015, 3:50:10 AM2/23/15
to gola...@googlegroups.com
Введение - http://blog.golang.org/laws-of-reflection
Документация - http://golang.org/pkg/reflect/
Оно всё на английском. Если интересует конкретный вопрос, спрашивайте.


--
Вы получили это сообщение, поскольку подписаны на группу "Golang Russian".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес golang-ru+...@googlegroups.com.
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages