Possible resource leak, 'defer' is called in the 'for' loop.
A "defer" statement invokes a function whose execution is deferred to the moment the surrounding function returns, either because the surrounding function executed a return statement , reached the end of its function body , or because the corresponding goroutine is panicking .
func (app App) Shutdown() {
for _, shutdown := range app.onShutdown {
if err := shutdown(); err != nil {
log.Println(err)
}
}
}
...
defer app.Shutdown()
wrap
:func swap(x, y string) (string, string) {
return y, x
}
func wrap(vs ...interface{}) []interface{} {
return vs
}
func main() {
fmt.Printf("Цена: %s , ok= %s\n", wrap(swap("1", "2"))...)
}
GO111MODULE=off go build
, получите собранный бинарник - нет там никаких внешних зависимостей и даже go.mod device.getStats()
, работу с БД) и проверять, как изменяется потребление памяти.db.Prepare
в цикле выглядят бесполезными.device.getStats()
, чтобы постоянно не создавать новые при вызове ioutil.ReadAll()
.return []byte{}, err
не является идиоматичным - используйте return nil, err
db.Query()
, ни db.QueryRow()
не возвращают ошибку sql.ErrNoRows
, если не вернулось ни одной записи. Смотрите, например, Query for a single row. Можете попробовать пакет jmoiron/sqlx для более удобной работы с БД (например, Get).defer db.Close()
должна находиться повыше. И почитайте документацию, нужен ли вам этот вызов вообще.db.Prepare()
возможно тоже излишне. Весь день голову ломаю.
но и сделать метод SetStatus() экспортируемым, чего не хотелось бы.
type Item interface {
// public methods
Folder() Folder
}
type Folder interface {
// public methods
Storage() Storage
}
type Storage interface {
// public methods
}
type StorageInternal interface {
SetStatus(status StorageStatus)
}
item.Folder().Storage().(StorageInternal).SetStatus(StatusModified)
Я исользую Docker для запуска сервера. Я запускаю сервер на порте 8081, но Docker перенаправляет запросы на 8081 с порта 8000, куда я могу "дотянуться" из браузера или Postman. Тесты я тоже запускаю в Docker. И сервер и тесты запущены в едином Docker-compose.
http://server:8081
buf
"reset-ится": l.buf = l.buf[:0]
buf
происходит только на первой итерации.func (l *Logger) Output(calldepth int, s string) error {
...
l.buf = l.buf[:0]
l.formatHeader(&l.buf, now, file, line)
l.buf = append(l.buf, s...)
if len(s) == 0 || s[len(s)-1] != '\n' {
l.buf = append(l.buf, '\n')
}
_, err := l.out.Write(l.buf)
return err
}
beeep.Notify
вам надо будет сохранить вшитую картинку во временный файл и передать в beeep.Notify
путь к нему.