以下錯誤:./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 關注
- 360 瀏覽
添加回答
舉報
0/150
提交
取消