我有 2 种方法,分别用于GET和POST。第一个是: var Join map[string]intfunc MapTheFields(c *gin.Context) { var data []string //Open the csv file csvFile, _ := os.Open("customers.csv") reader := csv.NewReader(csvFile) line, _ := reader.ReadAll() for i := 0; i < len(line[0]); i++ { Join = map[string]int{ line[0][i]: i, } data = append(data, line[0][i]) } GetSuccessResponse(c, "The Mappings are:", data) }第二个也和第一个类似。它只是将值保存到数据库中。我一直面临的问题是,我必须将从 csv 文件中获取的字段映射到我的项目中的字段,为此我制作了一个如上所示命名的地图,并且我正在访问 line in 的Join值第二个函数作为line[i][Join["Last Name"]]Join["Last Name"]但是我得到了as的值,0即使它的值为1,并且无论我在哪里使用连接作为索引,该值都是零,而且我总是只得到前 4 个值,然后是索引越界错误。休息代码是:func ImportCustomerData(c *gin.Context) {//Open the csv filecsvFile, _ := os.Open("customers.csv")reader := csv.NewReader(csvFile)var ( user models.User customer models.Customer address models.UserAddress addresses []models.UserAddress people []models.Customer users []models.User)line, _ := reader.ReadAll()for i := 1; i < len(line[0]); i++ { //Initialize address details address.Address = line[i][Join["address"]] address.City = line[i][Join["City"]] address.State = line[i][Join["State"]] address.Zipcode = line[i][Join["Postal Code"]] savedAddress := SaveNewAddress(address, merchantDb) //Initalize user details user.FirstName = line[i][Join["First Name"]] user.LastName = line[i][Join["Last Name"]] user.CompanyName = line[i][Join["Company Name"]] user.EmailId = line[i][Join["Email"]] user.PhoneNumber = line[i][Join["Phone"]] }}
1 回答
鸿蒙传说
TA贡献1865条经验 获得超7个赞
您每次都在分配一张新地图MapTheFields():
for i := 0; i < len(line[0]); i++ {
Join = map[string]int{
line[0][i]: i,
}
data = append(data, line[0][i])
}
Join类型的映射,应该首先分配,像这样声明 Join :
Join = make(map[string]int) //declaration can be global
MapTheFields()用这个替换代码片段:
for i := 0; i < len(line[0]); i++ {
Join[line[0][i]] = i
data = append(data, line[0][i])
}
- 1 回答
- 0 关注
- 87 浏览
添加回答
举报
0/150
提交
取消