golang sql指针值不断重复

时间:2018-07-07 02:33:48

标签: sql pointers go

下面是通过输入通道调用的golang函数

func getOptions(inChannel <-chan Param) <-chan ParamOptions {
    paramOptions := make(chan ParamOptions )

    go func() {
        defer close(paramOptions )
        var wg sync.WaitGroup

        conn, err := sql.Open("mssql", wellConnStr)
        if err != nil {
            log.Fatal("open connection failed:", err.Error())
        }

        defer conn.Close()

        getParamOptions := func(db *sql.DB, param *Param) {
            defer wg.Done()

            fmt.Println("querying options for ", param.Code, param.Name)

            rows, err := db.Query(`select *
                from dbo.ParamOptions where code=? and name=?`, &param.Code, &param.Name)

            fmt.Println("results for ", param.Name, param.Code)

            if err != nil {
                log.Fatal("query failed:", err.Error())
            }

            defer rows.Close()
            found := false

            ...

                paramOptions <- ParamOptions...

                break
            }

            if found == false {
                fmt.Println("did not find options for ", param.Code, param.Name)
            }
        }

        for paramInChannel := range paramChannel {
            wg.Add(1)
            fmt.Println("retrieving inputs for ", paramInChannel.Code, paramInChannel.Name)
            **go** getParamOptions(conn, &wellInChannel)
        }

        wg.Wait()
    }()

    return paramOptions 
}

如果我在调用函数getParamOptions之前删除了go关键字,那么它将正常工作。但是,如果我使用go,则最后的代码和名称将在getParamOptions函数中重复,即使检索到的选项似乎是正确的Param,代码和名称的值也会重复

0 个答案:

没有答案