Я реализую обертку вокруг стандартного лог-пакета, чтобы сделать регистратор с различными уровнями журнала.Golang: fmt, variadic args и%! (EXTRA type = value) error
У меня есть следующий интерфейс:
type Logger interface {
Trace(fmt string, args ...interface{})
Debug(fmt string, args ...interface{})
Info(fmt string, args ...interface{})
Warn(fmt string, args ...interface{})
Error(fmt string, args ...interface{})
Fatal(fmt string, args ...interface{})
Panic(fmt string, args ...interface{})
}
В реализации у меня есть что-то вроде этого (не точный код)
func Info(format string, args ...interface{}){
msg := fmt.Sprintf(format, args...)
log.Println(msg)
}
Теперь, предположим, я называю свою библиотеку так:
logger.Info("Hello %s", "World")
Я получаю распечатку: «Hello%! (EXTRA string = WORLD)», вместо ожидаемого «Hello World» ». Там аналогичный выход, если я делаю
Это возвращает «Hello World%! EXTRA [] interface {} = []".
вашей строка формата аргумент называются 'fmt', но вы используете 'format' в вызове' Sprintf'. – JimB
опечатка. я починил это. – dialAlpha
Это не показывает, что вы описываете: http://play.golang.org/p/IKwT8oKX3k – JimB