In der Hauptfunktion habe ich einen Gorilla Mux Router und eine Funktion, um die Route zu behandeln.In Golang funktioniert das Aufrufen einer Funktion mit und ohne nachfolgende Klammern bei der Verwendung von net/http
var router = mux.NewRouter()
func main() {
router.HandleFunc("/", ParseSlash)
http.Handle("/", router)
http.ListenAndServe(":8000", nil)
}
und ParseSlash sieht aus wie
const slash = `<h1>Login</h1>
<form method="post" action="/login">
<label for="name">User name</label>
<input type="text" id="name" name="name">
<label for="password">Password</label>
<input type="password" id="password" name="password">
<button type="submit">Login</button>
</form>`
func ParseSlash(response http.ResponseWriter, request *http.Request) {
fmt.Fprintf(response, slash)
}
jedoch in Haupt, wir sind nicht die Funktion als ParseSlash()
, aber ParseSlash
innerhalb router.HandleFunc()
aufrufen. Woher bezieht die Funktion die Parameter, wenn wir nicht explizit angeben? Wie nennt man so eine Funktion?
Vielen Dank.
Darüber hinaus wird die "Funktion ohne Klammern", wie Sie es genannt haben, ein Callback genannt und ist eine gängige Technik, für die Sie viele Ressourcen online finden können. Es ist sehr üblich (und imho wesentlich) in z.B. JavaScript. – tsdtsdtsd