Tady je ten článek: https://medium.com/@muroon/the-reason-why-zap-and-zerolog-make-it-zero-allocation-3ee8f69f660?source=user_profile---------0----------------------------
V kontextu článku zajímavé je, že nová knihovna pro strukturované logování slog která míří do standardní knihovny (momentálně v balíčku experimental) vytváří nové struktury typu Record takto:
func NewRecord(t time.Time, level Level, msg string, calldepth int, ctx context.Context) Record {
// ...
return Record{
Time: t,
Message: msg,
Level: level,
Context: ctx,
}
}
Tady si nejsem jistý, jak to vlastně dopadne, není ukazatel takže teoreticky to kompilátor může ponechat na zásobníku i jako návratovou hodnotu ne? Samozřejmě kromě řetězce což je odkaz na heap.
Mimochodem, ja jaře 2023 má vyjít 1.20 s multi error wrappingem, námět na článek :-) https://lukas.zapletalovi.com/posts/2022/wrapping-multiple-errors/