package main
import (
"net/http"
"strings"
)
/****************************************************************************************/
type Cache interface {
Get(string) ([]byte, error)
}
/****************************************************************************************/
/****************************************************************************************/
type inMemoryCache struct {
c map[string][]byte
}
func (c *inMemoryCache) Get(k string) ([]byte, error) {
return c.c[k], nil
}
/****************************************************************************************/
/****************************************************************************************/
type cacheHandler struct {
Cache
}
func (h *cacheHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
key := strings.Split(r.URL.EscapedPath(), "/")[2]
m := r.Method
if m == http.MethodGet {
b, _ := h.Get(key)
w.Write(b)
w.Write([]byte("hello"))
return
}
}
/****************************************************************************************/
/****************************************************************************************/
type Server struct {
Cache
}
func (s *Server) Listen() {
http.Handle("/cache/", &cacheHandler{s})
http.ListenAndServe(":12345", nil)
}
/****************************************************************************************/
func main() {
c := &inMemoryCache{make(map[string][]byte)}
server := &Server{c} //其实不传也可以, 就是会报没有使用的错误
server.Listen()
}
go cache
于 2022-10-04 14:25:25 首次发布