Junior — Senior
72
Возможные проблемы в реализации логгера
Компании, где спрашивали:
Условие задачи
Рассмотрим типичный пример создания простого логгера, записывающего сообщения в файл. Важно обратить внимание на потенциальные ошибки в реализации, такие как неверное управление ресурсами, отсутствие указателей в методах‑получателях и прочее.
type LogWriter interface {
Log(message string) error
Close() error
}
type DiskLogger struct{ outFile *os.File }
func NewDiskLogger(fileName string) (*DiskLogger, error) {
f, err := os.Create(fileName)
if err != nil {
return nil, err
}
return &DiskLogger{f}, nil
}
func (dl DiskLogger) Log(message string) error {
_, err := dl.outFile.WriteString(message + "\n")
return err
}
func (dl DiskLogger) Close() error {
return dl.outFile.Close()
}
В этом фрагменте кода можно обсудить, какие ошибки могут возникнуть при его использовании и как их исправить.