Size: a a a

2021 May 24

ЛА

Локоть Анатолий... in Go-go!
ну GORM в плане генерации запросов совсем не такой как Doctrine или что-то из джавы.
У него много магии в го коде, но не с формированием запросов.
Ну и если включить Debug, то все (вместе с плейсхолдерами) можно в прицнипе сразу увидеть в консоли.
источник

PK

Phil Kulin in Go-go!
Люблю странные вопросы. i += 1 vs  atomic.AddInt32(&i, 1) ?
Или в таком варианте без разницы?
источник

АП

Александр Попов... in Go-go!
народ вопрос по gomock, когда я из теста выхожу с ошибкой он орет про  missing call, что логично ибо вызов не был произведен на мок. Как побороть? как вариант у меня убрать из defer tController.Finish()
источник

ЛА

Локоть Анатолий... in Go-go!
если несколько горутин и i - shared variable, то второе.
в остальных случаях первое
источник

PK

Phil Kulin in Go-go!
А есть какое-то описание?
источник

PK

Phil Kulin in Go-go!
Так получается вообще вся работа с shared переменными стремная
источник

ЛА

Локоть Анатолий... in Go-go!
да!
она чревата race condition
источник

ЛА

Локоть Анатолий... in Go-go!
shared variable + goroutine = race condition в большинстве случаев
источник

RL

Ragnar Lodbrok in Go-go!
Так уберите лишний call

Тест так работает, что если указано, что надо сделать 3 call, то и в конце оно будет ругаться, если их было меньше
источник

АП

Александр Попов... in Go-go!
это аварийный выход по t.Fatal() если забыл передать зависимость
источник

ЛА

Локоть Анатолий... in Go-go!
у меня есть целая статья про это
https://golangforall.com/ru/post/golang-data-handling-concurrent-programs.html

Но не знаю, насколько это сфокусировано на именно том, что вы пытаетесь понять.
Тема конкуррентности, атомарности и тред-безопасности довольно глубока
источник

Z

Zver in Go-go!
только атомик, при многопотоке.
источник

Z

Zver in Go-go!
Если прям много каунтеров таких, то завести тип который красиво завернет.
источник

PK

Phil Kulin in Go-go!
Всё равно почитаю. Спасибо
источник

PK

Phil Kulin in Go-go!
Да это ладно
источник

AA

Alexey Agafonov in Go-go!
а в чём лучше генерация в отличие от джавы?
источник

PK

Phil Kulin in Go-go!
package xfrstat

import "sync/atomic"

// Metrics - статистика передачи данных.
type Metrics struct {
 Txb, Rxb uint64 // bytes
 Txm, Rxm uint64 // messages
 Err      uint64 // errors
}

// TxmInc - на одно переданное сообщение больше.
func (m *Metrics) TxmInc() {
 atomic.AddUint64(&m.Txm, 1)
}

// RxmInc - на одно прочитанное сообщение больше.
func (m *Metrics) RxmInc() {
 atomic.AddUint64(&m.Rxm, 1)
}

// ErrInc - на одну ошибку больше.
func (m *Metrics) ErrInc() {
 atomic.AddUint64(&m.Err, 1)
}

// TxbAdd - увеличение счетчика переданных байтов.
func (m *Metrics) TxbAdd(txb int) {
 atomic.AddUint64(&m.Txb, uint64(txb))
}

// RxbAdd - увеличение счетчика принятых байтов.
func (m *Metrics) RxbAdd(rxb int) {
 atomic.AddUint64(&m.Rxb, uint64(rxb))
}

// Stat - отдать статистику.
func (m *Metrics) Stat() Metrics {
 return Metrics{
   Txb: atomic.LoadUint64(&m.Txb),
   Rxb: atomic.LoadUint64(&m.Rxb),
   Txm: atomic.LoadUint64(&m.Txm),
   Rxm: atomic.LoadUint64(&m.Rxm),
   Err: atomic.LoadUint64(&m.Err),
 }
}
источник

PK

Phil Kulin in Go-go!
А. Ну там сразу можно сказать ответ на мой вопрос прямо с первого абзаца
источник

PK

Phil Kulin in Go-go!
Спасибо ещё раз
источник

PK

Phil Kulin in Go-go!
+
источник