Golang : Multiplexer with net/http and map

This is additional tutorial on multiplexer, with just net/http package and a map.

A multiplexer allows you to route to different function or handler based on the URL's path.

For example :

 "/someresource/:id" ---> "code to do something with the resource"

 "/users/:name/profile" ---> "code to do something with the profile"

This tutorial is similar to the previous tutorial on multiplexer with NewServeMux() function, but it uses a map instead.

 package main

 import "net/http"

 type home struct{}

 func (h home) ServeHTTP(w http.ResponseWriter, r *http.Request) {
 w.Write([]byte("Hello, World!"))

 type page struct {
 body string

 func (p page) ServeHTTP(w http.ResponseWriter, r *http.Request) {
 // echo back the page first URI

 // use map instead
 type multiplexer map[string]http.Handler

 func (m multiplexer) ServeHTTP(w http.ResponseWriter, r *http.Request) {
 if handler, ok := m[r.RequestURI]; ok {
 handler.ServeHTTP(w, r)
 } else {

 var mux = multiplexer{
 "/": home{},
 "/references/": page{"references"},
 "/tutorials/":  page{"tutorials"},

 func main() {
 http.ListenAndServe(":8080", mux)

  See also : Golang : Gorilla mux routing example

By Adam Ng

IF you gain some knowledge or the information here solved your programming problem. Please consider donating to the less fortunate or some charities that you like. Apart from donation, planting trees, volunteering or reducing your carbon footprint will be great too.