Я совершенно новичок в языке Golang и застрял в следующем случае:
В моем коде я использую пакет, который использует регистратор. Эта структура logger реализует интерфейс, так что его можно настраивать. Интерфейс определяет около 30 методов.
Теперь я хочу использовать регистратор пакетов, но мне нужно немного изменить один из методов. Я могу сделать это, определив собственную структуру логгера, реализовав все 30 методов так, как я хочу. Но это похоже на ненужное дублирование кода.
Есть ли способ реализовать структуру при использовании импортированной структуры логгера? Я думал о встраивании импортированной структуры в мою структуру, а в реализации методов я бы просто вызвал импортированный метод структуры. Примерно так:
type Logger Interface {
Debug()
Info()
Error()
}
type ImportedLogger struct {}
type MyLogger struct {
Logger ImportedLogger
}
func (ml *MyLogger) Debug() {
ml.Logger.Debug()
}
//This method I want to change
func (ml *MyLogger) Info() {
//My code here
ml.Logger.Info()
}
func (ml *MyLogger) Error() {
ml.Logger.Error()
}
Еще не пробовал, но это должно сработать, верно?
Но это не похоже на обычный способ ...
Что бы лучшая практика здесь?