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/