【发布时间】:2015-06-30 18:18:32
【问题描述】:
package main
import (
"net/http"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request){
w.Write([]byte("hello world"))
})
http.ListenAndServe(":8000", nil)
}
如果我删除http.Request 中的*:
github.com/creating_web_app_go/main.go:8:不能在 http 的参数中使用 func 文字(类型 func(http.ResponseWriter, http.Request))作为类型 func(http.ResponseWriter, *http.Request)。处理函数
我对 Go 和指针都很陌生。
所以问题是,
为什么http.Request 必须是指针而不是func literal?谁能以最简单的方式解释这一点,也许可以参考源代码?
【问题讨论】:
-
为什么是-1?这真的是一个问得不好的问题吗?
-
其实这是一个非常好的问题 imo
-
@ArmeenHarwood 我们必须添加 * 是有原因的,所以我认为这是一个糟糕的问题