【发布时间】:2021-09-02 05:40:06
【问题描述】:
所以我有一个方法需要返回一个数组,但我不知道要返回什么类型的数组。 要返回的这种类型的数组取决于方法逻辑。
我的方法是这样的……
func (c Case) GetFrdValues(frdFieldKey string) (interface{}, error) {
for _, singleFrd := range c.CaseDetails.GetCase().GetFrds() {
if singleFrd.GetIdentifier().GetFieldKey() == frdFieldKey {
switch singleFrd.GetValue().WhichType() {
case casespb.Value_StringValue_case:
return []string{singleFrd.GetValue().GetStringValue()}, nil
case casespb.Value_NumberValue_case:
return [1]float64{singleFrd.GetValue().GetNumberValue()}, nil
case casespb.Value_BoolValue_case:
return [1]bool{singleFrd.GetValue().GetBoolValue()}, nil
case casespb.Value_NullValue_case:
return []string{}, nil
case casespb.Value_ListValue_case:
return GetValuesFromFrdListValue(singleFrd.GetValue().GetListValue())
default:
return []string{}, nil
}
}
}
return []string{}, fmt.Errorf("Frd Value contains unsupported value type %v", frdFieldKey)
}
这很好用,因为它仍然返回我想要的值的数组。
但是我需要在单独的方法中操作返回的数组。但不能覆盖列表(interface{} 类型的变量)。
因此返回值需要类似于 [] interface{}。但是,如果我有这样的情况,那么我会在我的各种返回语句中收到错误。
不能在 return 语句中使用 ([]string literal) ([]string 类型的值) 作为 []interface{} 值。
我在堆栈溢出或网络上找不到任何关于此的信息,因此我们将不胜感激!
【问题讨论】: