
Denis
05.06.2017
20:21:18
Не свои же коленочные архитектуры тащить
На хабре на такой щит насмотрелся, в том числе и на го, ща найду
https://m.habrahabr.ru/post/318720/
Вот тут человек cgi микросервисом называет модно

Google

Denis
05.06.2017
20:31:11
https://m.habrahabr.ru/post/260539/
Щас бы абстрагировать стандартный http и на выходе получить тот же самый интерфейс ??

Ilya
05.06.2017
21:34:34
Мне кажется большинство адекватных статей по го написаны на английском
На хабре как-то мало совсем

Ywein
05.06.2017
21:46:08
Возвращаясь к моим проблем с со сканированием данных в struct.
Мне postgre из массива возвращает uint8 в котором закодирован json. Соответственно перед тем как сканировать это в стракт - нужно сконверить в массив строк.
Кто-нибудь знает как это сделать на sqlx?
я что-то не нашел в доках как делать пре-процессинг данных при StructScan
Все идеи как это решить выглядят ужасно криво

Igor
05.06.2017
21:54:34
На хабре как-то мало совсем
пока на хабре напишут, пока гугл-яндекс это проиндексируют, статья успеет сто раз устареть, поддерживаю. нафиг хабр

Ilya
05.06.2017
21:56:22
Я сам каждый день индексирую хабр, зачем мне гугл? ;)

Sander
05.06.2017
21:59:40
кто-нибудь может по простому объяснить, как это работает?
https://play.golang.org/p/zsy0-LmzN4
---
Не очень понимаю как вызывается ошибка/error, я вижу тут только какую-то магию.

Aleksandr
05.06.2017
22:03:07

Sander
05.06.2017
22:03:57
как он автоматически вызывает Error?
я же не делаю ErrNegativeSqrt.Error()

Aleksandr
05.06.2017
22:05:25

LexsZero
05.06.2017
22:08:04

Google

Sander
05.06.2017
22:08:53
может не по той ссылке прошел

LexsZero
05.06.2017
22:08:55
type error interface {
Error() string
}
емнип

Sander
05.06.2017
22:09:05
да я знаю, это я давно видел
подожди дай разобраться что мне выше написали

LexsZero
05.06.2017
22:10:14
емнип принтлн смотрит что ему передали еррор и сам дергает его за Error()

Sander
05.06.2017
22:10:34
ого, ничего себе
хмм

Aleksandr
05.06.2017
22:11:07

Sander
05.06.2017
22:11:08
func Println(a ...interface{}) (n int, err error) {
return Fprintln(os.Stdout, a...)
}
просто запутанно сильно, что-то у меня туго идет все

LexsZero
05.06.2017
22:14:14
как и %v в fmt.Printf

Sander
05.06.2017
22:14:51
с python, php просто как-то проще было ))

Aleksandr
05.06.2017
22:14:59
case 'v', 's', 'x', 'X', 'q':
// Is it an error or Stringer?
// The duplication in the bodies is necessary:
// setting handled and deferring catchPanic
// must happen before calling the method.
switch v := p.arg.(type) {
case error:
handled = true
defer p.catchPanic(p.arg, verb)
p.fmtString(v.Error(), verb)
return
case Stringer:
handled = true
defer p.catchPanic(p.arg, verb)
p.fmtString(v.String(), verb)
return
}
}

LexsZero
05.06.2017
22:15:42
ниасилил динамические языки, там компилятор по рукам не бьет
и надо головой думать поэтому

Sander
05.06.2017
22:16:44
это да

Ywein
06.06.2017
00:11:41
Короче я сдаюсь, похоже придется руками мапить результаты выдачи.
sqlx не хочет автоматически конверить массив куда надо
в pq это делается через .Scan(pq.Array(&x))
а там я толи не понимаю как это подставить, то ли что-то не работает

Google

hamper ?
06.06.2017
09:13:45
А как логичнее сконвертить одну структуру в другую, если обе описывают один и тот же жсон (теги совпадают), но поля разные? На сколько я понимаю struct -> json -> struct2 совсем хрень, просто перебрать все поля через рефлексию и по совпадающим тегам скопировать значения?

Daniel
06.06.2017
09:37:57
зачем через рефлексию?!
напишите конвертер руками, не ленитесь

Denis
06.06.2017
09:39:34
конвертер действительно проще, чем учитывать все ейдж кейсы рефлексии

nn008783
06.06.2017
09:51:45
о, вы че еще живы шоле

Semen
06.06.2017
10:55:26
yep

hamper ?
06.06.2017
11:20:54

Vladimir
06.06.2017
11:22:18

hamper ?
06.06.2017
11:22:56
Кодогенерация рулит.
Это ж еще и кодогенератор писать, хотя наверное единственный нормальный вариант.

Kirill
06.06.2017
11:24:42

Vladimir
06.06.2017
11:24:49

Michael
06.06.2017
11:26:53
? велосипеды

Michael
06.06.2017
11:27:15
а маппера поле-на-поле структуры ещё не написали?

hamper ?
06.06.2017
11:27:49
Ну вообще, если уж точно говорить, то мне надо https://developers.google.com/ad-exchange/rtb/downloads/openrtb-proto.txt превратить в https://github.com/bsm/openrtb
Точнее данные из структур которые генерятся на основе первого переложить в структуры второго.

Kirill
06.06.2017
11:30:13

Michael
06.06.2017
11:50:12
mapstructure is a Go library for decoding generic map values to structures and vice versa, while providing helpful error handling. оно?

Илья
06.06.2017
13:00:41
А подскажите утилитку, которой скармливаешь директорию проекта, а она показывает количество строк кода?

Ywein
06.06.2017
13:02:12
woohoo, решил проблему с которой вчера мучался(маппинг данных из БД в структуру, при том что в данных из БД - есть постгресовские массивы).
все просто

Google

Ywein
06.06.2017
13:02:58
нужно всего лишь использовать вместо Data []string - Data pq.StringArray

Kirill
06.06.2017
13:03:00

Alexei
06.06.2017
13:03:24

Admin
ERROR: S client not available

Илья
06.06.2017
13:04:46

Ywein
06.06.2017
13:06:18
А ну, рассказывайте
Я взял sqlx.
И оно замечательно все делает через StructScan. За исключением того, что постгресовский массив возвращается в качестве []uint8, а в структуре у меня []string.
Если не использовать sqlx и делать все руками то там это будет .Scan(pq.Array(&myStruct.Data))
Но мне очень не хотелось мапить данные руками
А если делать .StructScan(&myStruct) - то я получал сообщение о том, что в общем запихать []uint8 в []string - нельзя.
Вот эта проблема решается использованием
pq.StringArray в качестве типа данных

Kirill
06.06.2017
13:06:58

Ywein
06.06.2017
13:07:00
там внутри все обработки делаются

Kirill
06.06.2017
13:07:40
Народ, а кто-нибудь в продакшне использует sqlx?

Ywein
06.06.2017
13:08:04

Kirill
06.06.2017
13:08:35

crxfoz
06.06.2017
13:09:47

anton
06.06.2017
13:10:02

Илья
06.06.2017
13:11:15

Sergey
06.06.2017
13:15:07

Ywein
06.06.2017
13:16:16

Kirill
06.06.2017
13:17:00
И к чему пришли?
Кодогенерация интереснее как задача и в плане производительности. Взять sqlx и просто засунуть данные в стракт это прям совсем простой путь.

Ywein
06.06.2017
13:19:29

Google

Artem
06.06.2017
13:53:36
Имеется проект с вот такой вот структурой. В sector.go определяется тип Sector, в server.go я пишу import "sector" и создаю объект через s := new(Sector). При запуске голанг ругается на то, что "sector" подключен, но не юзается и на то, что "Sector" undefined
Новенький в голенге

Vadim
06.06.2017
13:57:09
Кот

Artem
06.06.2017
13:58:26
Только что дошло. Надо было в книгу смотреть внимательней

Aleksandr
06.06.2017
13:58:33

Artem
06.06.2017
13:58:34
там надо было короче sector.Sector

Aleksandr
06.06.2017
13:58:56

Artem
06.06.2017
13:59:28
Я бы за то, чтобы вообще без src быть
Но го так не считает

Aleksandr
06.06.2017
13:59:59

Artem
06.06.2017
14:00:27
Да, сейчас сделаю