使用 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()
修改字段(字符串)值的调用。
a := struct {
Name string
}{}
// works
reflect.ValueOf(&a).Elem().FieldByName("Name").SetString("Hello")
fmt.Printf("%#v\n", a)
我有一个动态导入,人们可以在其中选择要用于特定行的字段。 在 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]
因为模型不支持索引。我已经谷歌搜索了几个小时,但我无法找到解决问题的办法。
任何人都可以帮我解决这个问题吗?
如果该模型是任意结构,您可能需要使用反射来修改它的字段之一。
例如,参见 SetStringField2()
method, using a Value.SetString()
修改字段(字符串)值的调用。
a := struct {
Name string
}{}
// works
reflect.ValueOf(&a).Elem().FieldByName("Name").SetString("Hello")
fmt.Printf("%#v\n", a)