运行Go应用程序时VS Code错误

I am new to go and I am following a tutorial online. I get this error from VS Code

"cannot use c.ReadConfig (type func(http.ResponseWriter, *http.Request)) as type http.Handler in argument to router.Get: func(http.ResponseWriter, *http.Request) does not implement http.Handler (missing ServeHTTP method)".

I checked the Get and Redconfig functions and they look alright. The teacher on his end does not get the error and he is able to run the Go code fine. this is the snippet in the main

This the main function

func main() {
    config := domain.Config{}

    configService := service.ConfigService{
        Config:   &config,
        Location: "config.yaml",
    }

    go configService.Watch(time.Second * 30)

    c := controller.Controller{
        Config: &config,
    }

    router := muxinator.NewRouter()
    router.Get("/read/{serviceName}", c.ReadConfig)
    log.Fatal(router.ListenAndServe(":8080"))
}

This is the Get function

// Get returns the config for a particular service

func (c *Config) Get(serviceName string) (map[string]interface{}, error) {
    c.lock.RLock()
    defer c.lock.RUnlock()

    a, ok := c.config["base"].(map[string]interface{})
    if !ok {
        return nil, fmt.Errorf("base config is not a map")
    }

    // If no config is defined for the service
    if _, ok = c.config[serviceName]; !ok {
        // Return the base config
        return a, nil
    }

    b, ok := c.config[serviceName].(map[string]interface{})
    if !ok {
        return nil, fmt.Errorf("service %q config is not a map", serviceName)
    }

    // Merge the maps with the service config taking precedence
    config := make(map[string]interface{})
    for k, v := range a {
        config[k] = v
    }
    for k, v := range b {
        config[k] = v
    }

    return config, nil
}

This is ReadConfig

// ReadConfig writes the config for the given service to the ResponseWriter

func (c *Controller) ReadConfig(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Content-Type", "application/json; charset=UTF-8")

    vars := mux.Vars(r)
    serviceName, ok := vars["serviceName"]
    if !ok {
        w.WriteHeader(http.StatusBadRequest)
        fmt.Fprintf(w, "error")
    }

    config, err := c.Config.Get(serviceName)
    if err != nil {
        w.WriteHeader(http.StatusInternalServerError)
        fmt.Fprintf(w, "error")
    }

    rsp, err := json.Marshal(&config)
    if err != nil {
        w.WriteHeader(http.StatusInternalServerError)
        fmt.Fprintf(w, "error")
    }

    w.WriteHeader(http.StatusOK)
    fmt.Fprintf(w, string(rsp))
}

What should happen is that I should be able to run and I can go to http://localhost:8080/read/base

Use http.HandlerFunc:

router := muxinator.NewRouter()
router.Get("/read/{serviceName}", http.HandlerFunc(c.ReadConfig))

It's expecting a ServeHTTP method, but you gave it a direct function. http.HandlerFunc acts as a wrapper so you can use a plain function as your handler.