20210103关于一个包内结构体实现另一个包接口的知识点 - ziyouzy/2021blog GitHub Wiki

这篇文章中涉及到这一内容(http包):

https://blog.csdn.net/a_flying_bird/article/details/52462001

展示了如下代码:

package main 

import (
    "fmt"
    "log"
    "net/http"
)

type MyServeMux struct {
    http.ServeMux
    id int
}

type MessageHandler struct {
    msg string 
}

func (m *MessageHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
    fmt.Fprint(w, m.msg)
}

func main() {
    mux := new (MyServeMux)
    handler1 := &MessageHandler{"The first handler."}
    mux.Handle("/first",  handler1)
}

第一原则是,被实现的接口内的方法字段首字母必须大写,这样才有资格被外包实现

同时他的各个参数也是一样,如w http.ResponseWriter, r *http.Request,否则同样无法被外部包设计者调用,也就无从谈起实现接口了

总之这里只是彻底的学习下一个包内结构体实现另一个包接口的知识点,之前脑子里总是模糊不清

⚠️ **GitHub.com Fallback** ⚠️