Go 查询的命令行参数

Go 查询的命令行参数,go,Go,我正在编写一些代码,用于将mysql数据转储到.csv文件中。我想传入一个命令行arg,它允许用户输入为查询运行的ID,例如go run main.go 2将运行查询 SELECT * FROM table where id = 2; 我知道Go有一个操作系统包,我可以在其中传递如下内容: args := os.Args if len(args) < 2 { fmt.Println("Supply ID") os.Exit(1) }

我正在编写一些代码,用于将mysql数据转储到.csv文件中。我想传入一个命令行arg,它允许用户输入为查询运行的ID,例如go run main.go 2将运行查询

SELECT * FROM table where id = 2;
我知道Go有一个操作系统包,我可以在其中传递如下内容:

    args := os.Args
    if len(args) < 2 {
        fmt.Println("Supply ID")
        os.Exit(1)
    }
    testID := os.Args[1]
    fmt.Println(testID)
}

只需将参数添加到
查询

rows, _ := db.Query("SELECT * FROM table where id = ?;", os.Args[1])

testID需要是接口{}类型并添加到查询中

var testID interface{}
testID  = os.Args[1]
rows, _ := db.Query("SELECT * FROM table where id = ?;", testID)
并添加到查询中

var testID interface{}
testID  = os.Args[1]
rows, _ := db.Query("SELECT * FROM table where id = ?;", testID)
编辑: 为什么是接口{}


查询函数接受参数中的接口{}类型

首先将testID转换为接口{},并使用行,{:=db.Query(“从id=?”的表中选择*,testIDinterface)不丢弃
db.Query
。Query接受接口{}参数中的类型referelink->确实如此,
string
可分配给
接口{}
。(ps:downvote不是我的)所以答案是正确的,您决定使用或不使用接口{}类型。答案是误导性的:代码中的所有内容都应该有技术上的理由。为什么不使用惯用的
testID:=os.Args[1]
?os.Args[1]返回字符串类型,因此声明和分配变量将返回字符串变量。查询在参数中使用接口{}类型,所以我声明testID类接口{}类型。在两行中声明和分配,在一行中声明和分配是程序员的决定。我宁愿先去。