Filepath.Walk in Go 无法在 Windows 中正确选择 C: 驱动器下的文件夹

我想使用 golang.while buildng 以下代码从我的 postgresql 数据库中打印具有多列的多行


package main


import (

    "database/sql"

    "fmt"

    "github.com/gin-gonic/gin"

    _ "github.com/lib/pq"

    "log"

    "runtime"

)


func main() {


    runtime.GOMAXPROCS(runtime.NumCPU())


    db, err := sql.Open("postgres", "dbname=sample_data user=postgres password=postgres sslmode=disable")

    defer db.Close()

    if err != nil {

        fmt.Println("error connecting to DB")

    }

    r := gin.Default()

    r.GET("/cin_display", func(c *gin.Context) {

        rows := db.QueryRow("SELECT cin FROM companies limit 1;")


        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 {


                var v interface{}


                val := values[i]


                b, ok := val.([]byte)


                if ok {

                    v = string(b)

                } else {

                    v = val

                }


                fmt.Println(col, v)

            }

        }


    })

}


func Connect(connectionString string) *sql.DB {

    db, err := sql.Open("postgres", connectionString)

    if err != nil {

        log.Fatal(err)

    }

    return db

}

我收到类似的错误


rows.Columns 未定义(类型 *sql.Row 没有字段或方法列)


rows.Next 未定义(类型 *sql.Row 没有字段或方法 Next)


如何解决这个问题?


守候你守候我
浏览 255回答 2
2回答

MYYA

你盲目地返回错误而不记录它们。nil从回调返回非错误是filepath.Walk中止的信号。大概有一些您无权访问的文件或其他东西。

肥皂起泡泡

你返回一个错误,所以它停止走路径。正如规范所述,只要返回错误(除了一种特殊情况),处理就会停止。如果您想继续处理并忽略错误,请return nil改为。在我的机器上运行它在Access is denied一个文件上给我一个错误,然后它会破坏步行。之所以只看到$Recycle.Bin是因为它恰好是目录中的第一个文件夹,并且在它到达任何其他文件夹之前就被杀死了。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go