使用 forEach 填充模型的 Golang 数组

Golang array with forEach to fill model

我有一个动态导入,人们可以在其中选择要用于特定行的字段。 在 Golang 中,我显然收到了这个数组,想要遍历导入的 CSV 并将每一行添加到模型的特定部分。请参阅下面我当前的代码。

applicant := models.Applicant{
    Prefix:                        "",
    FirstName:                     "",
    LastName:                      "",
    Email:                         "",
    Telephone:                     "",
    Mobile:                        "",
    Gender:                        "",
    CreatedAt:                     time.Time{},
    UpdatedAt:                     nil,
    DeletedAt:                     nil,
}

row := 0
splitted := strings.Split(details[0], ",")
data := strings.Split(rec[0], ";")

for i := range splitted {
    if splitted[i] != "" {    
        applicant[splitted[i]] = data[row]
    }

    row++
}

显然这行不通,因为我不能说(在我的 for 循环中):

applicant[splitted[i]] = data[row]

因为模型不支持索引。我已经谷歌搜索了几个小时,但我无法找到解决问题的办法。

任何人都可以帮我解决这个问题吗?

如果该模型是任意结构,您可能需要使用反射来修改它的字段之一。

例如,参见 , which adds a SetStringField2() method, using a Value.SetString() 修改字段(字符串)值的调用。

Example:

    a := struct {
        Name string
    }{}

    // works
    reflect.ValueOf(&a).Elem().FieldByName("Name").SetString("Hello")
    fmt.Printf("%#v\n", a)