如何覆盖现有 Go 包中的函数?

huangapple go评论82阅读模式
英文:

How to override func of an existing go package?

问题

我是你的中文翻译助手,以下是你要翻译的内容:

我刚开始学习Go语言,对它还不太了解。我想在Go语言中的一个现有包"log4go"中,每次调用log4go.Error("An error")时都重写一个函数。怎样才是最好的方法呢?如果我想增强一个现有的方法,还有其他的方式吗?如果这是一个基础问题,请谅解。

英文:

I am new to go and cannot really put my head around it.
I want to override a func in an existing package in go "log4go" on every log4go.Error("An error") call. What is the best way to do it? If I want to enhance an existing method, what else could be the way? Please bear if its a basic question.

答案1

得分: 7

你根本无法做到这一点。在做不可能的事情上没有所谓的“最佳方式”。

你只能选择以下几种替代方案:

  • 分叉 log4go 并进行修补。
  • 不使用 log4go.Error,而是使用你自己的包装器 myError,它包装了 log4go 的 Error 函数。
  • 重新设计或寻找其他日志记录包。
英文:

You simply cannot do this. There is no "best way" to do something impossible.

All you have are alternatives:

  • Fork log4go and patch it.
  • Do not use log4go.Error but your own wrapper myError which wraps around log4go's Error function.
  • Redesign or look for a different logging package.

huangapple
  • 本文由 发表于 2013年8月29日 19:45:20
  • 转载请务必保留本文链接:https://go.coder-hub.com/18510088.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定