LINUX.ORG.RU

Что есть golang way?

 , , ,


0

3

Хочу у себя в приложении модельку, которая так же будет использоваться для валидации входных параметров и генерации форм. Для примера, имеется структура:

type User struct {
	Name string  `params:"minlength=2,maxlength=32,required"`
	Age  int     `params:"min=13,max=150"`
	GPA  float64 `params:"min=1,max=4.0"`
}
Парсим её и получаем данные о каждом из полей. Используем эту информацию сначало для того, чтобы сгенерировать форму. А потом при сабмите этой формы - для её валидации.

Проблема в том, что тэги полей (см. `...`) - это обычный string (хотя, наверное, было бы круто, если бы они имели чуть больше общего с java annotations). Стало быть, при таком подходе статической типизации и compile time проверки их корректности не будет, что не очень хорошо.

Как вариант, можно проверять всё это при запуске программы и заваливаться с panic, если параметры неверные. Т.е. по принципу fail early. Но насколько это канонично и golang вэйно?

Мне больше интересно почему в Go нет нормальных констант. Я не про строковые/числовые константы.

hateyoufeel ★★★★★ ()
Ответ на: комментарий от hateyoufeel

Мне больше интересно почему в Go нет нормальных констант. Я не про строковые/числовые константы.

https://groups.google.com/forum/#!msg/golang-nuts/_XiGWtxhmhE/8iWxTYXCfn0J

Adding const to the type system forces it to appear everywhere, and forces one to remove it everywhere if something changes. While there may be some benefit to marking objects immutable in some way, we don't think a const type qualifier is to way to go.

gv ()
Ответ на: комментарий от gv

https://groups.google.com/forum/#!msg/golang-nuts/_XiGWtxhmhE/8iWxTYXCfn0J

Adding const to the type system forces it to appear everywhere, and forces one to remove it everywhere if something changes. While there may be some benefit to marking objects immutable in some way, we don't think a const type qualifier is to way to go.

Да, я уже видел эту тупую отмазу. У Go с системой типов вообще всё крайне печально.

hateyoufeel ★★★★★ ()

Что есть golang way?

RussCox

ты сам знаешь </thread>

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.