
Alex
13.12.2017
12:02:27

Aleksandr
13.12.2017
12:02:39

?
13.12.2017
12:04:37

Alex
13.12.2017
12:06:58

Google

?
13.12.2017
12:07:26
не обманывай себя)

Alex
13.12.2017
12:11:37
не, с указателями все ок)) Просто по началу тяжко с этим :) А теперь норм.

Alexey
13.12.2017
12:19:00

Александр
13.12.2017
12:19:19
я представляю их как методы класса

Aleksandr
13.12.2017
12:20:52
коллеги, а объясните в чем вы проблему видите с указателями?

Alexey
13.12.2017
12:21:18
Если передавать указатель, то изменит значение в старом месте, если объект - то скопирует

Александр
13.12.2017
12:23:16

Alexey
13.12.2017
12:23:47

Александр
13.12.2017
12:25:34

Google

Alexey
13.12.2017
12:29:28

Александр
13.12.2017
12:30:18
"в receiver передан указатель, или как обычный аргумент, не" не понял

Alexey
13.12.2017
12:31:05
Ладно, я ушёл код писать:)

Aleksandr
13.12.2017
12:32:53
просто контекст поменяли

Александр
13.12.2017
12:34:35
кстати про контекст, его не явно можно передать?
у меня хендлеры соотвествуют http.Handle, хотел там контекс из middleware получить
через структуру знаю ?
я подумал может как то "глобально" можно прокинуть

Aleksandr
13.12.2017
12:35:52
контекст имеет request scope. Глобально он не может и не должен быть

Александр
13.12.2017
12:37:11
блин, неужели придеться ради аргументов в URL делать свой интерфейс с поддержкой третьего аргумента ?
типо ServeHTTP(w http.ResponseWriter, r *http.Request, rp httprouter.Params)
или в структуре хреначить свойство Context *context.Context

Aleksandr
13.12.2017
12:39:33
request же имееет контекст?

Александр
13.12.2017
12:39:49
а точняк же
забыл про него
щаз попробую бахнуть туда

Aleksandr
13.12.2017
12:40:14
я написал как-то свой роутер с мидлварями, но в продакшне вроде нигде не заюзал. там у меня такой код:
func injectParameters(r *http.Request, pattern string, path string) *http.Request {
re := regexp.MustCompile(pattern)
matches := re.FindStringSubmatch(path)
names := re.SubexpNames()
for i, match := range matches {
if i != 0 {
ctx := context.WithValue(r.Context(), names[i], match)
r = r.WithContext(ctx)
}
}
return r
}

Google

Александр
13.12.2017
12:40:59
аго аго
сенки
хотя я читал что контекст течет зараза

Aleksandr
13.12.2017
12:42:39

Александр
13.12.2017
12:48:54
А где можно почитать по именовают? Пакет называется config, функция называется newConfig(path string)
мне кажется тавтология ?

Aleksandr
13.12.2017
13:04:08
просто New
c := config.New()

Александр
13.12.2017
13:04:36
тогда уж c := config.New("path/to/file.cfg")

Aleksandr
13.12.2017
13:04:54
ну я опустил лишнее. разберешься)

Александр
13.12.2017
13:05:23
еще
if err != nil {
log.Fatal(err)
}
по всему коду утомляют ?

Александр
13.12.2017
13:05:44
33 библиотеки инициализируешь, 33 раза проверил

Aleksandr
13.12.2017
13:06:00
увы
с другой стороны как иначе?

Александр
13.12.2017
13:06:19
не знаю насколько кашерн это в main делать
длинный выходит
с другой стороны как иначе?
func validError(errs ...error) error {
for i, _ := range errs {
if errs[i] != nil {
return errs[i]
}
}
return nil
}
народ там преложил заморочиться ?
юзать так:
x, err1 := doSomething(2)
y, err2 := doSomething(3)
if e := validError(err1, err2); e != nil {
return e
}

Google

Aleksandr
13.12.2017
13:08:41
на второй строчке уже может сломаться, если зависит от первой
проверка ошибок всегда разная. унифицировать не стоит

Александр
13.12.2017
13:08:53
это да
лол
func doA() (A, error) {
...
}
func doB(a A, err error) (B, error) {
...
}
c, err := doB(doA())
ну это вообще антипаттерн имхо ?

Alexander
13.12.2017
14:14:20
Кто в курсе, как можно в go test передать свой флаг с путем к файлу конфига например?

Admin
ERROR: S client not available

Alexander
13.12.2017
14:15:34
Или какие вобще практики в тестах инфу снаружи получать какую-то? Из env?

Александр
13.12.2017
14:17:58

Alexander
13.12.2017
14:18:21
у меня не прокатывает)

Александр
13.12.2017
14:18:54
https://siongui.github.io/2017/04/28/command-line-argument-in-golang-test/

Alexander
13.12.2017
14:21:44
ага видел, он ругается flag provided but not defined: -flagName
разобрался надо было в инит запихать

Александр
13.12.2017
15:08:11
а если я делаю суб пакет, например user/handler
к нему только как к handler можно обращаться из main?
просто тогда имена конфликтуют, или алиасы прописывай

Aleksandr
13.12.2017
15:22:58
или по имени или по алиасу

Александр
13.12.2017
15:23:13
или я неправильно именую..
раз название пакета повторяется в каждой из сущностей (доменная архитектура)

Google

Aleksandr
13.12.2017
15:24:36

Kirill
13.12.2017
15:38:46
Товарищи гоферы, а в го есть аналог any/all для слайсов? Или только все через for только хардкор?

Nikolay
13.12.2017
15:39:15
Это тебе не питон

Kirill
13.12.2017
15:39:23
окаааай

John
13.12.2017
15:52:58
наверное, одна из немногих вещей, которой мне действительно не хватает

Kirill
13.12.2017
15:53:48
или множества?

John
13.12.2017
15:54:12

Kirill
13.12.2017
15:55:14
Угу, есть такое. А для гошки нет популярного пакета вида "1000 офигительных функций и типов которых почем-то нет в стандарте" ?

John
13.12.2017
15:56:00
именно такого пакета, все в одном, Я не видел. Да и смысл ...

Hexwell
13.12.2017
15:57:16
что телега забыла в /dev/tty

John
13.12.2017
15:58:32

Hexwell
13.12.2017
15:58:44
а вдруг блобы

John
13.12.2017
16:01:22
тогда старадай

Hexwell
13.12.2017
16:02:01
чому, я просто же запретил телеге доступ
и зачем мой скрин удалили
или я не кидал