亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Go 中帶有接收器的方法聲明

Go 中帶有接收器的方法聲明

Go
冉冉說 2021-06-29 17:15:50
以下錯誤:./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個贊

您正在嘗試從另一個包中向預先存在的結構添加新方法;你不能這樣做。

正確的做法是在您自己的包中定義一個結構,該結構將為預先存在的結構設置別名并繼承其所有方法。這樣做之后,您將能夠將新方法添加到新結構中。

之后,您可以在任何地方使用您自己的結構,以便您可以訪問額外的方法。


查看完整回答
反對 回復 2021-07-12
?
aluckdog

TA貢獻1847條經驗 獲得超7個贊

您現在可能想看看是否可以將方法和行為附加到任何類型,例如 int 或 time.Time - 不可能。只有在同一包中定義了類型時,您才能為該類型添加方法。



查看完整回答
反對 回復 2021-07-12
  • 2 回答
  • 0 關注
  • 360 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號