Что такое Stringer интерфейс?

Junior
681 просмотров
AFK Offer AI

Stringer — интерфейс из пакета fmt. Если тип реализует String() string, то fmt.Println и друзья используют его для вывода.

type Status int

const ( Active Status = iota Blocked )

func (s Status) String() string { switch s { case Active: return "active" case Blocked: return "blocked" default: return "unknown" } }

fmt.Println(Active) // "active" (не "0")

Аналогично есть GoStringer (для %#v) и error (для %s при ошибках).

Совет: для enum-констант можно использовать go generate + stringer:

//go:generate stringer -type=Status

Сгенерирует String() автоматически.

Следующий вопрос

Как работает memory profiling?