Задача с созданием интерфейса Logger
Вот задача:
- Создайте интерфейс
Logger
с методомLog
, который будет записывать сообщение в журнал.- Создайте пользовательский тип
LogLevel
типаstring
, сделайте константные значения типаLogLevel
со значениямиError
иInfo
.- Создайте структуру
Log
с полемLogLevel
.- Реализуйте метод
Log
c параметром типа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")
}