我希望创建一个函数,可以作为HandleFunc用于http,也可以使用另一个writer进行调用。
由于http.ResponseWriter实现了io.Writer,而我的函数不需要设置HTTP头,因此我认为这是可能的:
由于http.ResponseWriter实现了io.Writer,而我的函数不需要设置HTTP头,因此我认为这是可能的:
func doit(w io.Writer, r *http.Request) {
w.Write([]byte("Hello"))
}
http.HandleFunc("/", doit)
但是不行:
无法使用doit(类型为func(io.Writer,*http.Request))作为http.HandleFunc中参数类型为func(http.ResponseWriter,*http.Request)的函数
这很有道理,因为它需要类型断言将io.Writer与预期的http.ResponseWriter兼容。
函数是否可以实现类似功能?