patterngoMajor
In Go HTTP handlers, why is the ResponseWriter a value but the Request a pointer?
Viewed 0 times
pointerresponsewriterwhyhandlersrequestthevaluebuthttp
Problem
I'm learning Go by writing an app for GAE, and this is signature of a handler function:
I'm pointer newbie here, so why is the
func handle(w http.ResponseWriter, r *http.Request) {}I'm pointer newbie here, so why is the
Request object a pointer, but the ResponseWriter not? Is there any need to have it this way or is this just to make some kind of advanced pointer based code possible?Solution
What you get for
From server.go:
On the other hand,
From request.go:
w is a pointer to the non exported type http.response but as ResponseWriter is an interface, that's not visible.From server.go:
type ResponseWriter interface {
...
}On the other hand,
r is a pointer to a concrete struct, hence the need to pass a reference explicitly.From request.go:
type Request struct {
...
}Code Snippets
type ResponseWriter interface {
...
}type Request struct {
...
}Context
Stack Overflow Q#13255907, score: 94
Revisions (0)
No revisions yet.