我Logger用这些方法定义了一个接口:
type Logger interface {
Info(args ...interface{})
Warn(args ...interface{})
Error(args ...interface{})
}
现在,我想扩展log.Logger类型以符合这个接口。由于log.Logger没有定义这些方法,我需要实现它们。
我试图通过添加新方法来扩展它:
type LoggerImpl log.Logger
func (logger *LoggerImpl) Info(v ...interface{}) {
logger.Println(v)
}
func (logger *LoggerImpl) Warn(v ...interface{}) {
logger.Println(v)
}
func (logger *LoggerImpl) Error(v ...interface{}) {
logger.Println(v)
}
但似乎这是错误的方法,因为我收到一条错误消息logger.Println undefined (type *LoggerImpl has no field or method Println)。
我尝试过的另一个解决方案是嵌入类型,但这也会返回错误:
type LoggerImpl struct {
log.Logger
}
func (logger *LoggerImpl) Info(v ...interface{}) {
logger.Println(v)
}
func (logger *LoggerImpl) Warn(v ...interface{}) {
logger.Println(v)
}
func (logger *LoggerImpl) Error(v ...interface{}) {
logger.Println(v)
}
func initLogger() *LoggerImpl {
logger := log.New(os.Stdout, "", log.Lshortfile)
return logger
}
我在这里得到的错误是从initLogger函数返回记录器时:cannot use logger (variable of type *log.Logger) as *LoggerImpl value in return statement
如何修改log.Logger类型以符合Logger接口?
哈士奇WWW
相关分类