问题描述
我希望 func A 传参一个 func B ,调用 func A 返回 func B 返回的结果
例如下面截图的代码 Get 方法(左边) 调用 Read 方法(右边), 但 Read 方法返回的值我需要再做一次转换 返回 []*NamespaceOption
, 所以我在 Read 方法的返回参数加上 []*interface{}
, 但 golang 很明显不允许这么做
那有什么替代方案实现这种效果 ?
相关代码
// 调用方
func (n *Namespace) Get(appId string) ([]*NamespaceOption, error){
deploy := &Deployment{
Trace:&Trace{Namespace:appId},
}
return deploy.Read(func(values []*mvccpb.KeyValue) []*NamespaceOption {
var ops []*NamespaceOption
for _, val := range values {
op := &NamespaceOption{}
if util.Decode(val.Value, op) == nil {
ops = append(ops, op)
}
}
return ops
})
}
// 被调用方
func (d *Deployment) Read(f func([]*mvccpb.KeyValue) []*interface{}) ([]*interface{}, error) {
...
return f(values), nil
}
你传进Read的方法都已经完成到
[]*NamespaceOption
的转换了,为什么Read还要返回[]*interface{}
呢,把[]*interface{}
返回值改成[]*NamespaceOption
不就行了?