Chapter 15 - Web Apps

Exercise 1: A Simple Web App

Here’s the start of a web app that simulates rolling a six-sided die. When a browser makes a request for the /roll path, the app will respond with a random number from 1 to 6. Each refresh of the page will generate a new random number.


package main

import (

// rollDie simulates rolling a six-sided die.
func rollDie() int {
	return rand.Intn(6) + 1

func rollHandler(writer http.ResponseWriter, request *http.Request) {
	// YOUR CODE HERE: Call rollDie, convert the return
	// value to a string, and convert the string to a
	// slice of bytes. Store the result in a "body"
	// variable.
	roll := rollDie()
	rollString := strconv.Itoa(roll)
	body := []byte(rollString)
	_, err := writer.Write(body)
	if err != nil {

func main() {
	// YOUR CODE HERE: Have all requests for a URL with a
	// path of "/roll" go to the rollHandler function.
	http.HandleFunc("/roll", rollHandler)
	err := http.ListenAndServe("localhost:8080", nil)