我有一個問題,使用此語句傳遞一個結構來一個帖子馬提尼例行
m.Post(Model, binding.Form(Wish), func(wish Wish, r render.Render, db *mgo.Database) {
這工作得很好,如果我使用該結構的前衛裏面這樣定義
m.Post(Model, binding.Form(Wish1{}) , func(wish Wish1, r render.Render, db *mgo.Database) {
,但我需要這成爲一個獨立的包。 我得到「願望不是一個類型」希望是綁定函數的返回。 這與一個主要的類型結構。我通過接口作爲接口{}
我正在使用GO和Martini.Classic()對於我來說,改變馬提尼或綁定包真的很複雜。有什麼建議麼。
這是所有代碼
package chlistpkg
import (
"github.com/codegangsta/martini"
"github.com/codegangsta/martini-contrib/binding"
"github.com/codegangsta/martini-contrib/render"
"labix.org/v2/mgo"
"time"
"fmt"
"html/template"
"reflect"
"adminStruct"
)
只是爲了顯示我需要通過以常規的doall
type Wish1 struct {
Name string `form:"name"`
Description string `form:"description"`
AnyDate time.Time `form:"anydate"`
Active bool `form:"active"`
Number int `form:"number"`
NumDec float32 `form:"numDec"`
}
DB返回martini.Handler
func DB() martini.Handler {
session, err := mgo.Dial("mongodb://localhost")
if err != nil {
panic(err)
}
return func(c martini.Context) {
s := session.Clone()
c.Map(s.DB("advent2"))
defer s.Close()
c.Next()
}
的結構}
GetAll返回數據庫中的所有願望
func GetAll(db *mgo.Database, entList interface{}) interface{} {
db.C("wishes").Find(nil).All(entList)
fmt.Println("GettAll entList =", entList)
return entList
}
func Doall(Model string, Wish interface{}, Wish2 interface{}, Wishlist interface{} ) {
m := martini.Classic()
fmt.Println ("martini.Classic =", m)
m.Use(martini.Static("images")) // serve from the "images" directory as well
m.Use(render.Renderer(render.Options{
Directory: "templates",
Layout: "layout",
}))
m.Use(DB())
m.Get(Model, func(r render.Render, db *mgo.Database) {
r.HTML(200, "lista4", GetAll(db, Wishlist))
})
綁定不帶指針。我必須通過引用傳遞的結構上的「願望」 問題是「願望願望」的回報,我得到了一個錯誤的願望是不是在編譯時類型 提前
m.Post(Model, binding.Form(Wish), func(wish Wish, r render.Render, db *mgo.Database) {
fmt.Println("Input wish =", wish)
db.C("wishes").Insert(wish)
r.HTML(200, "lista4", GetAll(db, Wishlist))
})
m.Run()
感謝
Luis
你可以發佈錯誤所指的行嗎?你的代碼有很多錯誤。 – elithrar