func main(){
...
err := http.ListenAndServe(":9000", access_log(r))
if err != nil {
log.Fatal("HTTP server: ", err)
}
}
func access_log(r http.Handler) {
f, err := os.OpenFile("log/access.log", os.O_CREATE | os.O_WRONLY | os.O_APPEND, 0666)
if err != nil {
log.Panic("Access log: ", err)
}
return handlers.LoggingHandler(io.Writer(f), r)
}
错误
# command-line-arguments
./main.go:71: access_log(r) used as value
./main.go:83: too many arguments to return
最佳答案
func access_log(r)
没有定义参数 r 的类型。
一旦你定义了它,编译应该就可以进行了。
./main.go:83: too many arguments to return
定义的函数没有返回值,因此出错。
如果加上handlers#LoggingHandler的返回类型,那就是 http.Handler
。
func access_log(r) http.Handler {
...
// Then you can return:
return handlers.LoggingHandler(io.Writer(f), r)
}
关于go - 语法错误函数返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29602990/