Size: a a a

2020 May 18

VM

Vladislav Milenin in Go-go!
Kirill
коллеги, всем привет! а подскажите, пожалуйста:
у меня есть пакет, в котором строится map[string]func, которая заполняется всегда одинаково, а потом уже ищутся и вызываются необходимые функции по ключам. Насколько плохо, если я сделаю приватную переменную пакета с этой мапой и буду заполнять ее через init на старте приложения?
Тестам вроде мешать будет
источник

K

Kirill in Go-go!
а поч? я просто пока не сталкивался с такими вопросами
источник

VM

Vladislav Milenin in Go-go!
Вообще зависит от, если подразумевается работа со внешними зависимостями, которые иногда будут не нужны (при дебаге например иногда полезно отключить инициализацию подключений к бд и тд), то по пакетам бегать неудобно
источник

kr

kay rus in Go-go!
т.е. рекомендуется делать так:
myReader := bytes.NewBuffer(make([]byte, backupChunk))


чем просто:
myReader := &bytes.Buffer{}

?
источник

kr

kay rus in Go-go!
и это поможет во врмемя runtime, когда потребуется больше памяти выделить?
источник

VM

Vladislav Milenin in Go-go!
kay rus
т.е. рекомендуется делать так:
myReader := bytes.NewBuffer(make([]byte, backupChunk))


чем просто:
myReader := &bytes.Buffer{}

?
Ну да. И там вроде ошибка будет если память кончится в буфере, но я не часто сталкиваюсь
источник

kr

kay rus in Go-go!
Vladislav Milenin
Ну да. И там вроде ошибка будет если память кончится в буфере, но я не часто сталкиваюсь
нет, он бесконечно может выделять память
источник

K

Kirill in Go-go!
Vladislav Milenin
Вообще зависит от, если подразумевается работа со внешними зависимостями, которые иногда будут не нужны (при дебаге например иногда полезно отключить инициализацию подключений к бд и тд), то по пакетам бегать неудобно
в моем пакете, в котором я хочу сделать инит, происходит достаточно изолированное действие, которое никак не пересекается с остальным приложением
источник

K

Kirill in Go-go!
то есть, там не строятся никакие подключения к бд
источник

K

Kirill in Go-go!
и не меняются правила работы
источник

K

Kirill in Go-go!
просто строится мапа, которая потом внутри этого же пакета и строится
источник

VM

Vladislav Milenin in Go-go!
Kirill
в моем пакете, в котором я хочу сделать инит, происходит достаточно изолированное действие, которое никак не пересекается с остальным приложением
Ну если нет то ок) главное предусмотреть чтобы не мешало при отладке и тестах
источник

K

Kirill in Go-go!
меня просто волнует больше то, насколько это ок использовать сайдэффект для таких целей
источник

K

Kirill in Go-go!
Vladislav Milenin
Ну если нет то ок) главное предусмотреть чтобы не мешало при отладке и тестах
уууу, спасибо!
источник

VM

Vladislav Milenin in Go-go!
kay rus
нет, он бесконечно может выделять память
источник

VI

Vadim Inshakov in Go-go!
не знаете, много ли ресурсов требует сервер с профилеровщиком, включенный по дефолту? добавил _ "net/http/pprof", чтобы снимать данные по памяти с сервера, но насколько наблюдатель влияет на наблюдаемого?)
источник

DP

Daniel Podolsky in Go-go!
Практически не влияет
источник

VM

Vladislav Milenin in Go-go!
так откуда там оверхед)
источник

MN

Mykyta Nikitenko in Go-go!
Vadim Inshakov
не знаете, много ли ресурсов требует сервер с профилеровщиком, включенный по дефолту? добавил _ "net/http/pprof", чтобы снимать данные по памяти с сервера, но насколько наблюдатель влияет на наблюдаемого?)
Рекомендую по-дефолту оставлять профайлер включенным до тех самых пор, пока реально не столкнетесь с тем, что он "влияет")
источник

VI

Vadim Inshakov in Go-go!
спасибо, просто я подумал, вдруг там какие-нибудь дикие stop the world эффекты
источник