我需要Go中方法重用的帮助。
我的Kubernetes操作符中有两个函数签名(在不同的控制器中):
func myFunc(ctx context.Context, r *MyKindReconciler, myKind *myApiVersion.myKind) (ctrl.Result, error) {
和
func myFunc(ctx context.Context, r *MyOtherKindReconciler, myOtherKind *myApiVersion.myOtherKind) (ctrl.Result, error) {
函数myFunc
的函数体在两种情况下是相同的,只是传入的变量类型不同。两个kinds
都有相同的可用方法。
为了防止重复,如果可能的话,我想把这个方法移到一个助手程序中。你知道如何实现吗?
1条答案
按热度按时间a8jjtwal1#
让它工作。
以下是我创建的interace:
可能的方法签名如下所示:
只有下行
.DeepCopy()
将不可用,因为它返回一个特定的类型,并且不能在Interface
中重载。