简体   繁体   English

将空接口转换为字符串

[英]go convert empty interface to string

I'm using the mymysql package and I'm trying to create a function which gets an SQL query and some parameters (as variadic empty interface): 我正在使用mymysql软件包,并且试图创建一个获取SQL查询和一些参数的函数(如可变的空接口):

func FindByQuery(statement string, params ...interface{}) (diver *DiverT, err error) {
    values := make([]interface{}, len(params))
    for i := range params {
            values[i] = params[i]
    }

    // Both statements result in the same error...
    row, _, execError := Db.QueryFirst(statement,values...)

    row, _, execError := Db.QueryFirst(statement,params...)

    // Additional code...
}

When I call this method using some kind of SQL, I always get an SQL error. 当我使用某种类型的SQL调用此方法时,总是会出现SQL错误。 I do something like: 我做类似的事情:

FindByQuery("SELECT * FROM Diver WHERE Name=?", "Markus")

Which results in the following error: 导致以下错误:

Received #1064 error from MySQL server: "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?%!(EXTRA string=Markus)' at line 1" 从MySQL服务器收到#1064错误:“您的SQL语法有错误;请在与MySQL服务器版本相对应的手册中找到在第1行的'?%!(EXTRA string = Markus)'附近使用正确语法的正确语法”

What should I do that the parameter is converted correctly to a string (or whatever it is, if I have different parameter(s))? 我应该怎么做才能将参数正确转换为字符串(或者,如果我有不同的参数,则可以转换为字符串)?

尝试使用printf格式语法:

FindByQuery("SELECT * FROM Diver WHERE Name=%s", "Markus")

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM