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 关注
- 269 浏览
添加回答
举报