如何使用 Golang 实现导入数据功能?

我有 2 种方法,分别用于GET和POST。第一个是:


 var Join map[string]int


func 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 file

csvFile, _ := 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"]]

  }

}


犯罪嫌疑人X
浏览 88回答 1
1回答

鸿蒙传说

您每次都在分配一张新地图MapTheFields():&nbsp;for i := 0; i < len(line[0]); i++ {&nbsp; &nbsp; &nbsp;Join = map[string]int{&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;line[0][i]: i,&nbsp; &nbsp; &nbsp;}&nbsp; &nbsp; &nbsp;data = append(data, line[0][i])&nbsp;}Join类型的映射,应该首先分配,像这样声明 Join :Join = make(map[string]int) //declaration can be globalMapTheFields()用这个替换代码片段:&nbsp;for i := 0; i < len(line[0]); i++ {&nbsp; &nbsp; &nbsp;Join[line[0][i]] = i&nbsp; &nbsp; &nbsp;data = append(data, line[0][i])&nbsp;}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go