以下错误:./main.go:13: c.Set undefined (type redis.Conn has no field or method Set)./main.go:19: invalid receiver type *redis.Conn (redis.Conn is an interface type)./main.go:20: red.Send undefined (type *redis.Conn has no field or method Send)是从这个代码产生的:package mainimport ( "encoding/json" "github.com/garyburd/redigo/redis" "github.com/gorilla/mux" "log" "net/http" )func setHandler(res http.ResponseWriter, req *http.Request) { c := connectRedis() c.Set("foo", "bar") data, _ := json.Marshal("{'order':1, 'weight': 100, 'reps': 5, 'rest': 1}") res.Header().Set("Content-Type", "application/json; charset=utf-8") res.Write(data)}func (red *redis.Conn) Set(key string, value string) error { if _, err := red.Send("set", key, value); err != nil { return err }}func connectRedis() redis.Conn { c, err := redis.Dial("tcp", ":6379") if err != nil { // handle error } defer c.Close() return c}func main() { r := mux.NewRouter() r.HandleFunc("/sets.json", setHandler) http.Handle("/", r) err := http.ListenAndServe(":7000", nil) if err != nil { log.Fatal("ListenAndServe: ", err) }}当我有一个接口时,如何注册一个方法?
2 回答
慕的地6264312
TA贡献1817条经验 获得超6个赞
您正在尝试从另一个包中向预先存在的结构添加新方法;你不能这样做。
正确的做法是在您自己的包中定义一个结构,该结构将为预先存在的结构设置别名并继承其所有方法。这样做之后,您将能够将新方法添加到新结构中。
之后,您可以在任何地方使用您自己的结构,以便您可以访问额外的方法。
aluckdog
TA贡献1847条经验 获得超7个赞
您现在可能想看看是否可以将方法和行为附加到任何类型,例如 int 或 time.Time - 不可能。只有在同一包中定义了类型时,您才能为该类型添加方法。
- 2 回答
- 0 关注
- 331 浏览
添加回答
举报
0/150
提交
取消