3 回答

TA貢獻1779條經驗 獲得超6個贊
它在錯誤消息中: (Create method requires pointer receiver)
您已經在*AppController
(指向 AppController 的指針)上定義了 Create ,但是您正在嘗試使用AppController
不滿足接口的 。
您可能想要的解決方案是更改controler := AppController{}
為controler := &AppController{}

TA貢獻1852條經驗 獲得超1個贊
正如 cthom06 所說,答案就在錯誤中。
錯誤消息的原因是您僅ResourceController在傳遞指針而不是值時才實現。
當您實現Show,Create等時,您使用了
func (self *AppController)...
這需要該方法獲取一個指針接收器,而是AddResources被賦予了價值 的controler,而不是指針。
下面是一些示例代碼來顯示問題:
package main
import "fmt"
type I interface {
Show(i int)
}
type T struct{}
func (t *T) Show(i int) {
fmt.Println(i)
}
func CallShow(i I) {
i.Show(32);
}
func main() {
obj := T{}
// CallShow(obj) // This doesn't work unless you change func (t *T) to func (t T)
CallShow(&obj) // This works because you pass a pointer
}

TA貢獻1828條經驗 獲得超3個贊
不推薦使用“ResourceHandler”。我建議使用 v3 API:
api := rest.NewApi()
api.Use(rest.DefaultDevStack...)
router, err := rest.MakeRouter(
// your routes here ...
)
if err != nil {
log.Fatal(err)
}
api.SetApp(router)
log.Fatal(http.ListenAndServe(":8080", api.MakeHandler()))
Antoine - go-json-rest 作者
- 3 回答
- 0 關注
- 311 瀏覽
添加回答
舉報