我有一个类型的切片People,我需要将此切片传递给获取类型“interface {}”的函数。People 类型“实现”了一个名为 的接口HasCustomField,但我无法在函数内进行类型转换,就像我正在做的那样:type HasCustomField interface { GetCustomField() map[string]interface{}}type People struct { Name string customField map[string]interface{}}func (c *People) GetCustomField() map[string]interface{} { if c.customField == nil { c.customField = make(map[string]interface{}) } return c.customField}func main() { users := []People{{Name:"Teste"},{Name:"Mizael"}} ProcessCustomField(&users)}func ProcessCustomField(list interface{}) { if list != nil { listVal := reflect.ValueOf(list).Elem() if listVal.Kind() == reflect.Slice { for i:=0; i<listVal.Len(); i++ { valueReflect := listVal.Index(i).Interface() objValueFinal, ok := valueReflect.(HasCustomField) if ok { fmt.Println("OK") } else { fmt.Println("NAO OK") } }}结果总是“不正常”,我无法进行转换,我也尝试了其他几种方法,包括GetCustomField()通过反射调用该方法,但不成功。
添加回答
举报
0/150
提交
取消