我已经在生产中使用函数F2()。 F2()从许多其他地方被调用。我不想触摸F2()或不想触摸F2被调用的所有地方。如何在调用F2()之前调用另一个方法F1()?
答案 0 :(得分:1)
听起来您想monkey patch进行编码。
Go中没有真正的方法可以做到这一点。是的,有github.com/bouk/monkey,但即使是作者也不建议使用它。
您要么必须:
有一些方法可以更改正在运行的代码,而无需更改实际的代码或调用者。这几乎就是接口的用途,但是您也可以对结构嵌入进行类似的操作:
type (
x struct{}
y struct{}
z struct{ x }
)
func (_ x) method() string { return "x" }
func (_ y) method() string { return "y" }
z
结构嵌入x
,因此z{}.method()
将返回x
。您可以通过嵌入y
结构而不是y
结构来将其更改为x
。