doc/articles/wiki/part2.go - ActiveState ActiveGo 1.8
...

Source file doc/articles/wiki/part2.go

     1	// Copyright 2010 The Go Authors. All rights reserved.
     2	// Use of this source code is governed by a BSD-style
     3	// license that can be found in the LICENSE file.
     4	
     5	package main
     6	
     7	import (
     8		"fmt"
     9		"io/ioutil"
    10		"net/http"
    11	)
    12	
    13	type Page struct {
    14		Title string
    15		Body  []byte
    16	}
    17	
    18	func (p *Page) save() error {
    19		filename := p.Title + ".txt"
    20		return ioutil.WriteFile(filename, p.Body, 0600)
    21	}
    22	
    23	func loadPage(title string) (*Page, error) {
    24		filename := title + ".txt"
    25		body, err := ioutil.ReadFile(filename)
    26		if err != nil {
    27			return nil, err
    28		}
    29		return &Page{Title: title, Body: body}, nil
    30	}
    31	
    32	func viewHandler(w http.ResponseWriter, r *http.Request) {
    33		title := r.URL.Path[len("/view/"):]
    34		p, _ := loadPage(title)
    35		fmt.Fprintf(w, "<h1>%s</h1><div>%s</div>", p.Title, p.Body)
    36	}
    37	
    38	func main() {
    39		http.HandleFunc("/view/", viewHandler)
    40		http.ListenAndServe(":8080", nil)
    41	}
    42	

View as plain text