登录
首页 >  Golang >  Go问答

命令行参数的检索

来源:stackoverflow

时间:2024-03-12 14:54:26 377浏览 收藏

对于一个Golang开发者来说,牢固扎实的基础是十分重要的,golang学习网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《命令行参数的检索》,主要介绍了,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了!

问题内容

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

select * from table where id = 2;

我知道 go 有 os 包,我可以在其中传递如下内容:

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 = ?;")

    err := sqltocsv.WriteFile("table.csv",rows)
    if err != nil {
        panic(err)
    }

    columns, _ := rows.Columns()
    count := len(columns)
    values := make([]interface{}, count)
    valuePtrs := make([]interface{}, count)

    for rows.Next() {
        for i := range columns {
            valuePtrs[i] = &values[i]
        }

        rows.Scan(valuePtrs...)

        for i, col := range columns {
            val := values[i]

            b, ok := val.([]byte)
            var v interface{}
            if ok {
                v = string(b)
            } else {
                v = val
            }

            fmt.Println(col, v)
        }
    }
}

解决方案


只需将您的参数添加到 query

rows, _ := db.query("select * from table where id = ?;", os.args[1])

testid 需要为 interface{} 类型并添加到查询

var testid interface{}
testid  = os.args[1]

并添加到查询

rows, _ := db.Query("SELECT * FROM table where id = ?;", testID)

编辑: 为什么要使用接口{}?

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

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>