问答详情
源自:4-5 Vlog视频文件上传接口【开启“日常搬砖”模式】

为何两次注册handler的方法不同?

http.Handle("/video/",http.StripPrefix("/video/",fileHandler))
http.HandleFunc("/api/upload",uploadHandler)

为什么两次使用的注册方法不同呢?

提问者:公鸡喔喔喔 2021-03-29 15:09

个回答

  • 虽然还是咸鱼
    2021-10-29 17:38:43

    HandleFunc传入的第二个参数是一个函数,Handle传入的是一个实现了Handler接口的结构体。内部实现的时候,这个传入的参数当然会被统一成一个接口,但是函数不是接口,所以需要做内部的转型,给函数绑定一个方法,然后调用函数自己(这个算是go比较巧妙的用法)。其实HandleFunc内部的实现很简单,最后也是调用Handle。