Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
func ToRecords(records <-chan Record) <-chan Recordsfunc ToRecords(records <-chan *Record) <-chan *Recordsfunc byValueP(in *foo) bar {
//...
}
BenchmarkByPointer-4 20000000 107 ns/op
BenchmarkByValue-4 50000000 41.9 ns/op
BenchmarkByValueP-4 50000000 32.6 ns/op
Одним из возможных решений для прерывания for/switch или for/select является использование метки:
func someFunc(...) ... {
<инициализация всего что нужно + defer-ы>
for {
select {
case <-ch:
// Do something
case <-ctx.Done():
return ...
}
}
}
Топ-10 самых распространенных ошибок, которые мне встречались в Go-проектах