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 путь к нему.