2

こんにちは、私は gorp と mysql を使用しています。struct gorp return を挿入するとき

Reflect.Value.Interface: エクスポートされていないフィールドまたはメソッドから取得した値を返すことはできません

in gorp docs は言うPanics if any interface in the list has not been registered with AddTableが、私はこの構造体を追加した

この問題は BUS 構造体にメソッドがありますか?? 私のプログラムと私のパニックは私を助けます

 type BUS struct {
        Id       int64    `db:"Idx"`
        Created  int64
        Writer   string    `db:"Writer"`
        WriterId int64
        Title    string    `db:"Title"`
        Content  string    `db:"Content"`
        Want     int64
        status   int64
    }
func (b BUS) search(bf Board_find) []BUS {
    var arr []BUS
    query, query_map := bf.Prepare()
    _, err := dbmap.Select(&arr, query, query_map)
    if err != nil {
        log.Print(err)
    }
    return arr
}

func (b* BUS) write() {
    log.Print(reflect.TypeOf(b)) //just test code
    err := dbmap.Insert(b)
    check_err(err, "error in bus write")
}


func make_dbmap() *gorp.DbMap {
    db, err := sql.Open("mysql", "tester:tester@tcp(127.0.0.1:3306)/TEST")
    check_err(err, "db connection error")
    log.Println("db connection Ok")

    dialect := gorp.MySQLDialect{"InnoDB", "UTF8"}
    dbmap := &gorp.DbMap{Db: db, Dialect: dialect}

    AddTable(dbmap, USER_DB{}, "USER")
    table := AddTable(dbmap, BUS{}, "BUSBOARD")
    table.ColMap("Writer").SetMaxSize(10)
    table.ColMap("Title").SetMaxSize(25)
    table.ColMap("Content").SetMaxSize(50)
    log.Println("Add Table in gorp Ok")
    return dbmap
}
4

1 に答える 1

5

このエラー; reflect.Value.Interface: cannot return value obtained from unexported field or methodエクスポートされていないことが原因である可能性が最も高いですstatus int64(少なくとも、それを引き起こす可能性のある他のエクスポートされていないフィールドは見当たりません)。修正はアッパーケーシングと同じくらい簡単Statusです。

Go では、大文字の名前を持つ構造体のフィールドはエクスポートされますが、小文字の名前を持つものはエクスポートされません。エクスポートされていないフィールドは、言語が「プライベート」フィールドに最も近いものです。この場合、gorp またはエラーをスローしたものはすべてタイプを反映し、ステータス フィールドを見つけてそれを返そうとしましたが、フィールドがエクスポートされていないためにエラーが発生したときです。

于 2015-07-09T16:22:12.010 に答える