语法错误函数返回值

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


繁星coding
浏览 190回答 1
1回答

慕标琳琳

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)}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go