我有一個(gè)類型的切片People,我需要將此切片傳遞給獲取類型“interface {}”的函數(shù)。People 類型“實(shí)現(xiàn)”了一個(gè)名為 的接口HasCustomField,但我無(wú)法在函數(shù)內(nèi)進(jìn)行類型轉(zhuǎn)換,就像我正在做的那樣: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") } }}結(jié)果總是“不正?!保覠o(wú)法進(jìn)行轉(zhuǎn)換,我也嘗試了其他幾種方法,包括GetCustomField()通過(guò)反射調(diào)用該方法,但不成功。
通過(guò)反射將“interface {}”類型轉(zhuǎn)換為“interface {}”類型切片中的另一個(gè)接口
拉丁的傳說(shuō)
2023-08-07 15:23:18