go函数必须显式声明参数类型和返回值类型;`access_log` 函数缺少参数类型声明且未指定返回类型(应为 `http.handler`),导致编译报错“used as value”和“too many arguments to return”。
在 Go 语言中,所有函数都必须严格声明参数类型与返回值类型,不允许省略。你遇到的两个编译错误:
- ./main.go:71: access_log(r) used as value
- ./main.go:83: too many arguments to return
根本原因在于 access_log 函数定义不完整:
func access_log(r http.Handler) { ... } // ❌ 错误:无返回类型,但函数体内却有 return 语句
该函数试图返回 handlers.LoggingHandler(…)(其类型为 http.Handler),但函数签名未声明任何返回值,Go 编译器因此拒绝编译。
✅ 正确写法需同时满足两点: