小编use*_*312的帖子

Golang加入数组接口

我尝试创建批量插入.我使用gorm github.com/jinzhu/gorm

import (
    "fmt"
    dB "github.com/edwinlab/api/repositories"
)

func Update() error {
    tx := dB.GetWriteDB().Begin()
    sqlStr := "INSERT INTO city(code, name) VALUES (?, ?),(?, ?)"
    vals := []interface{}{}

    vals = append(vals, "XX1", "Jakarta")
    vals = append(vals, "XX2", "Bandung")

    tx.Exec(sqlStr, vals)

    tx.Commit()

    return nil
}
Run Code Online (Sandbox Code Playgroud)

但是我收到了一个错误:

错误1136:列计数与第1行的值计数不匹配,因为我返回错误的查询

INSERT INTO city(code, name) VALUES ('XX1','Jakarta','XX2','Bandung', %!v(MISSING)),(%!v(MISSING), %!v(MISSING))
Run Code Online (Sandbox Code Playgroud)

如果我使用手动查询它的工作原理:

tx.Exec(sqlStr, "XX1", "Jakarta", "XX2", "Bandung")
Run Code Online (Sandbox Code Playgroud)

它会产生:

INSERT INTO city(code, name) VALUES ('XX1', 'Jakarta'),('XX2', 'Bandung')
Run Code Online (Sandbox Code Playgroud)

问题是如何使数组接口生成字符串 "XX1", "Jakarta", ...

感谢帮助.

mysql variadic go slice go-gorm

6
推荐指数
1
解决办法
963
查看次数

标签 统计

go ×1

go-gorm ×1

mysql ×1

slice ×1

variadic ×1