Задача с созданием интерфейса Logger
Вот задача:
- Создайте интерфейс
Loggerс методомLog, который будет записывать сообщение в журнал.- Создайте пользовательский тип
LogLevelтипаstring, сделайте константные значения типаLogLevelсо значениямиErrorиInfo.- Создайте структуру
Logс полемLogLevel.- Реализуйте метод
Logc параметром типаstring(текст ошибки), который в зависимости от текущегоLogLevelвыводит сообщение "ERROR: текст ошибки" или "INFO: текст ошибки".
Есть моё решение:
package main
import "fmt"
type Logger interface {
Log()
}
type LogLevel string
const FlagF LogLevel = "Error"
const FlagI LogLevel = "Info"
type Log struct {
Level LogLevel
}
func (l Log) Log(s string) {
if l.Level == FlagF {
fmt.Printf("ERROR: %s", s)
} else {
fmt.Printf("INFO: %s", s)
}
}
func main() {
errorLog := &Log{Level: Error}
errorLog.Log("This is an error message")
}
Но при выполнении выдаётся ошибка:
undefined: Error в функции main при объявлении структуры errorLog
Ответы (1 шт):
Автор решения: bruh
→ Ссылка
Если бы в errorLog := &Log{Level: Error} ввод был errorLog := &Log{Level: "Error"} тогда все было бы норм, а так исправления:
package main
import "fmt"
type Logger interface {
Log()
}
type LogLevel string
const Error LogLevel = "Error"
const Info LogLevel = "Info"
type Log struct {
Level LogLevel
}
func (l Log) Log(s string) {
if l.Level == Error {
fmt.Printf("ERROR: %s", s)
} else {
fmt.Printf("INFO: %s", s)
}
}
func main() {
errorLog := &Log{Level: Error}
errorLog.Log("This is an error message")
}