
Александр
22.09.2017
11:42:53
В идеале бы другой тег задать

Vasily Romanov
22.09.2017
11:43:38
Используй easyjson :)
Есть вариант с заэмбеженной структуруой, у которой переопределены некоторые поля

Александр
22.09.2017
11:44:45
Можете кинуть ссылкой конкретно на этот функционал?

Google

Vasily Romanov
22.09.2017
11:44:49
Тогда одна будет полностьбю паковаться, другая, у которой переопределены поля, у другой - частично
Конкретно этого функционала там нету

Александр
22.09.2017
11:45:25
Тогда я не понял, что значит " заэмбеженная структурура" :)

Vasily Romanov
22.09.2017
11:45:32
Хм
Есть ещё вариант

Александр
22.09.2017
11:45:48
Проставить теги везде, сгенерить, убрать теги, сгенерить еще раз?

Vasily Romanov
22.09.2017
11:45:54
vby
мин

Daniel
22.09.2017
11:46:31

Vasily Romanov
22.09.2017
11:46:33
type Struct1 struct {
Name string
}
type Struct3 struct {
Struct1
Name string json:"-"
}
в easyjson дя подобного рода целей были сделаны opt.* поля
там в зависимости о тфлага оно или папкуется или нет
или ещё вариант - использовать указатель

Google

Александр
22.09.2017
11:47:36

Vasily Romanov
22.09.2017
11:47:37
тогда nil поковаться не будет с omit_empty

Александр
22.09.2017
11:48:40

Daniel
22.09.2017
11:49:16

Vasily Romanov
22.09.2017
11:49:49
Field int json:",omitempty"

Александр
22.09.2017
11:50:45

Vasily Romanov
22.09.2017
11:51:45
нет, с обыными полями тоже работает

Daniel
22.09.2017
11:51:58
да, я бы сделал так. но у меня пунктик - не использовать для разных подсистем одни и те же структуры

Vasily Romanov
22.09.2017
11:52:03
если значение по-умолчанию - то тогда оно не маршалится

Александр
22.09.2017
11:54:00
Спасибо, ребята
Придумал, как проще сделать
Взять msgpack и задать для него свои теги
Для него есть тоже кодогенератор

Lev
22.09.2017
12:07:56
curl -I
что неа?

Max
22.09.2017
13:24:14
я хотел бы спросить у вас, как можно пройтись по мапе, которая находится в мапе?
из головы вылетело

Alexander
22.09.2017
13:25:17
what ? ну наверно так же как и по двумерному массиву

in favor
22.09.2017
13:25:30
for k, v := range nestedmap[key]

Google

Max
22.09.2017
13:25:42
блэт, чет я плыву
спасибо

Илья
22.09.2017
13:27:27
очень интересная статья
https://segment.com/blog/allocation-efficiency-in-high-performance-go-services/?utm_source=golangweekly&utm_medium=email
:)

Roman
22.09.2017
15:21:28
А кто какими пакетами пользуется для создания VK Ботов для сообществ?

Andrew
22.09.2017
16:01:30

Roman
22.09.2017
16:02:07
так нерелевантно гугл ещё не отвечал мне.

Alexander
22.09.2017
16:02:13
это телеграм же а не вк :р

Roman
22.09.2017
16:02:22
VK Bot. Не ТГ.
ага

Andrew
22.09.2017
16:05:30
Ааа, прочитал между строк ?
Пятница же, зрение ослаблено на 90%

John
22.09.2017
17:42:37
Ребят, подскажите, как правильно в Го сделать словарь с мьютексами, что-то типо такого
mutexes = map[string]*sync.Mutex
mutexes[key].Lock()
defer mutexes[key].Unlock()Есть поток ключей, который слушают горутины, и нужно чтобы одинаковые ключи обрабатывались только одной горутиной. Т.е. если пришло 2 одинаковых ключа подряд, их взяли две разные горутины, но вторая ждет мьютекса.

Vasily Romanov
22.09.2017
17:45:57
а канал пер ключ организовать не вариант ?
буферизированный
в смысле, что каждая горутина обрабатывает только свой ключ, через канал
жрать конечно может побольше ресурсов если ключей много
код выглядит правильным, но надо ещё его будет покрыть дополнительным мютексом на добавление-удаление ключей

John
22.09.2017
18:01:47
горутину на ключ не вариант, ключей тысячи и неизвестны заранее

anton
22.09.2017
18:03:29
что-то мне подсказывает, что тебе тут акторная модель нужна..

Google

John
22.09.2017
18:09:32
те, словарь с каналами, что-то типо такого:
var directionLocks sync.Map
// worker
lock, ok := directionLocks.Load(key)
if ok {
<-lock.(chan bool)
}
var lock = make(chan bool, 1)
directionLocks.Store(key, lock)
log.Println("Processed")
lock <-true

Greg
22.09.2017
18:10:15
Советую
https://github.com/AsynkronIT/protoactor-go

Dion
22.09.2017
18:11:05
Ахахахахаххахах назвал константу url, два часа репу чесал почему url.QueryEscape не могу вызвать

anton
22.09.2017
18:13:00
Советую
о, поделись опытом.
для какого проекта юзал?
какие нагрузки? какие вообще впечатления?

Greg
22.09.2017
18:13:15
@troyanov https://github.com/Nyarum/noterius
И отдельно еще в рабочем проекте для контроля бекграунд тасков

anton
22.09.2017
18:13:41

Greg
22.09.2017
18:13:55
Гоурутина + канал - модель хорошая, но слишком низкоуровнево, абстракции свои всегда наворачиваются
Акторная модель в этом случае дает группировку хорошую

John
22.09.2017
18:16:28

anton
22.09.2017
18:18:10
по сути некий статик пул горутин на обработку и в них роутишь по какому-то признаку

John
22.09.2017
18:24:32
про роутинг думал, но чет не пошло. в соседнем чате посоветовали такой пакет https://github.com/moby/moby/tree/master/pkg/locker

anton
22.09.2017
18:29:02

John
22.09.2017
18:36:18
эт да. подумаю еще в сторону роутинга

Vasily Romanov
22.09.2017
18:43:18
не локнутся системные треды. если конечно не прибивать горутину к треду гвоздями
и это называется не роутинг, а шардинг

anton
22.09.2017
18:56:20

Google

anton
22.09.2017
18:56:46

Vasily Romanov
22.09.2017
18:58:46
Маловероятно что там будут блокирующие операции. В го их немного
В это м то вся фишка языка

anton
22.09.2017
19:01:32
да там что угодно может быть, если будет какой-нибудь IO

Vasily Romanov
22.09.2017
19:02:54
Смотря куда ио

makas
22.09.2017
19:17:13
golang нужен для бекенда , а для чего еще?
где его чаще всего используют?

Pawel
22.09.2017
19:19:30

AxiS
22.09.2017
19:23:53

makas
22.09.2017
19:24:42

Мерлин
22.09.2017
19:26:06

makas
22.09.2017
19:26:41

AxiS
22.09.2017
19:31:57

Мерлин
22.09.2017
19:33:02
на php)
Я помню серию статей на хабре про криптовалюту на пыхе
:3