首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有SELECT的golang错误

带有SELECT的golang错误
EN

Stack Overflow用户
提问于 2014-11-23 22:48:33
回答 1查看 1.9K关注 0票数 2

我正在尝试使用GORP从mySQL数据库中进行选择。我收到一个错误,上面写着"reflect.Value.Interface:无法返回从未导出的字段或方法中获得的值“。,我已经验证了DB的连接性。例如,Select (*) count给出了正确的计数。我看到它失败了

dbmap.Select(&dd,"SELECT * FROM kd_dropdowns")

如果没有上面的行,程序不会抛出任何错误。

这是我的密码。

代码语言:javascript
复制
package main
import (
"database/sql"
"fmt"
"log"
"net/http"

"github.com/coopernurse/gorp"
_ "github.com/go-sql-driver/mysql"
"github.com/gorilla/mux"
)

func main() {

fmt.Println("reached main")
// Create a MUX
r := mux.NewRouter()

//manegala patti
r.HandleFunc("/manegalu", manegalaTorisu).Methods("GET")

http.ListenAndServe(":8080", r)

}
func manegalaTorisu(w http.ResponseWriter, r *http.Request) {
type Dropdowns struct {
    dd_id      int64  `db:"dd_id"`
    identifier int64  `db:"identifier"`
    name       string `db:"name"`
    active     string `db:"active"`
}

db, err := sql.Open("mysql", "krishna:xxxx@/kd")
defer db.Close()

var dbmap *gorp.DbMap
// construct a gorp DbMap
dbmap = &gorp.DbMap{Db: db, Dialect: gorp.MySQLDialect{}}

var dd []Dropdowns
_, err = dbmap.Select(&dd, "SELECT * FROM kd_dropdowns")
checkErr(err, "Select failed")
fmt.Fprint(w, "Success")
}

func checkErr(err error, msg string) {
if err != nil {
    log.Fatalln(msg, err)
}
}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-24 11:27:11

这是人们从Go开始的一个常见陷阱。

结构中的所有字段都是导出的隐藏的,它们只是基于第一个字母:如果是大写,则该字段将导出。否则,就不是这样了。

Gorp正在尝试访问结构中导出的字段。但是你用了小写字母,所以字段是隐藏的,所以它失败了。

试试这个吧。

代码语言:javascript
复制
...
type Dropdowns struct {
    DdId       int64  `db:"dd_id"`
    Identifier int64  `db:"identifier"`
    Name       string `db:"name"`
    Active     string `db:"active"`
}
...

如果你喜欢的话,你可以把你的dd_id作为DdId (我认为这是Go中的惯用用法)。

请注意,Go的大写导出特性适用于常量、包变量、类型和函数名以及结构中的字段。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27095344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档