Задача с созданием интерфейса 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")
}
→ Ссылка