Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在golang中如何在F2()之前调用函数F1()_Go - Fatal编程技术网

在golang中如何在F2()之前调用函数F1()

在golang中如何在F2()之前调用函数F1(),go,Go,我有一个函数F2()已经在生产中。F2()从许多其他地方被调用。我不想触摸F2(),也不想触摸调用F2的所有位置。如何在调用F2()之前调用另一个方法F1() 听起来好像你想去写代码 在围棋中没有真正的方法可以做到这一点。是的,有,但即使是作者也不推荐使用它 您必须: 更改您的F2() 更改F2()的调用者 添加一个调用F1()和F2()的F3(),或者执行一些其他重构,使您可以执行所需的操作 有一些方法可以在不更改实际代码或调用方的情况下更改正在运行的代码。这几乎就是接口的用途,但您也可

我有一个函数F2()已经在生产中。F2()从许多其他地方被调用。我不想触摸F2(),也不想触摸调用F2的所有位置。如何在调用F2()之前调用另一个方法F1()

听起来好像你想去写代码

在围棋中没有真正的方法可以做到这一点。是的,有,但即使是作者也不推荐使用它

您必须:

  • 更改您的F2()
  • 更改F2()的调用者
  • 添加一个调用F1()和F2()的F3(),或者执行一些其他重构,使您可以执行所需的操作

有一些方法可以在不更改实际代码或调用方的情况下更改正在运行的代码。这几乎就是接口的用途,但您也可以使用结构嵌入执行类似的操作:

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
结构而不是
x
结构,可以将其更改为
y

如果不接触代码,则无法更改。我认为您需要修改代码。考虑实现一个“接口”,这可能会在将来对您有所帮助。您可能只需要确保在F2()的开头调用F1(),否则,您将需要到处更新。在F2()中调用F1()