匿名结构体添加方法的问题

开发中遇到一个问题,在如下代码中, 31 到 37 行的位置default分支(Point A), 本意是用匿名结构体实现接口, 匿名结构体的作用就是返回resource not found 反馈给调用者, 但是发现在代码中很难给一个匿名结构体添加一个方法. 我知道将返回类型改写为函数类型而不是接口类型, 可以解决遇到的问题.

但是我发这个篇文章的目的是想探讨一下, 如何给一个匿名结构体添加方法,并让它符合某个接口

以下是编译器在代码 第31行(Pinter A) 给出的提示信息
Cannot use ‘struct { handle func(w http.ResponseWriter, d []byte, r *http.Request, id string) }{ func(w http.ResponseWriter, d []byte, r *http.Request, id string){ http.NotFound(w, r) }, }’ (type struct {…}) as type MediaHandler in assignment Type does not implement ‘MediaHandler’ as ‘handle’ method is missing l

package captcha

import (
    "bytes"
    "io"
    "net/http"
    "path"
    "strings"
    "time"
)


type captchaHandler struct {
    imgWidth  int
    imgHeight int
}

func (h *captchaHandler) createMediaHandler( r *http.Request) MediaHandler {
    dir, file := path.Split(r.URL.Path)
    ext := path.Ext(file)
    lang := strings.ToLower(r.FormValue("lang"))
    download := path.Base(dir) == "download"
    var mediaHandler MediaHandler
    switch ext {
    case ".png":
        mediaHandler = &ImgHandler{h.imgWidth, h.imgHeight, download}
    case ".wav":
        mediaHandler = &AudioHandler{lang, download}
    default:

        mediaHandler = struct {   //Point A: compile error , struct can't be assigned to mediaHandler 
            handle func(w http.ResponseWriter, d []byte, r *http.Request, id string)
        }{
            func(w http.ResponseWriter, d []byte, r *http.Request, id string){
                http.NotFound(w, r)
            },
        }
    }
    return mediaHandler
}