是否可以修改其他程序包中定义的类型的方法集?

内置的log和log.Logger不提供Error或之类的Warning方法Python。


因此,我想Logger使用以下代码为内置类型编写一个:


func (l *Logger) Error(v interface{}) {

    info := fmt.Sprintf("ERROR: %v", v)

    l.Println(info)

}

我把上面的代码在一个文件morelog.go下GOPATH/src/log。


而在main.go我写道:


logger := log.New(os.Stdout, "Test", 1)

logger.Error("Error in main.")

当我跑步时go build,我得到:


./main.go:124: logger.Error undefined (type *log.Logger has no field or method Error)

我知道我可以通过定义一个新类型并在该类型上定义方法来实现类似的目标。但是我认为,如果可以直接将方法添加到内置类型中,效果会更好。


互换的青春
浏览 181回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go