comparison src/httpsv/httpsv.go @ 0:de451fa0c9cd

golang repository.
author pyon@macmini
date Sat, 01 Oct 2016 11:16:31 +0900
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:de451fa0c9cd
1 package main
2
3 import (
4 "flag"
5 "fmt"
6 "html/template"
7 "log"
8 "net/http"
9 "os"
10 )
11
12 type rate struct {
13 year int
14 rate0 float64
15 rate1 float64
16 }
17
18 type rates []rate
19
20 func main() {
21
22 var s = flag.Bool( "s", false, "server mode" )
23 var p = flag.Int( "p", 8080, "port")
24 flag.Parse()
25
26 if *s {
27 host := "localhost:" + fmt.Sprintf( "%d", *p )
28 fmt.Fprintf( os.Stderr, "starting server (%d)...\n", *p )
29
30 r0 := rate{ 2001, 0.1, 0.2 }
31 r1 := rate{ 2002, 0.2, 0.3 }
32 rt := rates{ r0, r1 }
33
34 http.HandleFunc( "/", handler )
35 http.HandleFunc( "/list", rt.list )
36 log.Fatal( http.ListenAndServe( host, nil ) )
37
38 } else {
39 files := flag.Args()
40
41 if len( files ) == 3 {
42 fmt.Println( "ok" )
43 } else {
44 fmt.Fprintln( os.Stderr, "not ok" )
45 }
46 }
47 }
48
49 func handler( w http.ResponseWriter, r *http.Request ) {
50
51 const tmpl = `<p> Hello, Template ! </p>`
52 t := template.Must( template.New( "hoge" ).Parse( tmpl ) )
53 err := t.Execute( w, nil ); if err != nil {
54 log.Fatal( err )
55 }
56 fmt.Fprintf( w, "url.path = %q\n", r.URL.Path )
57 }
58
59 func ( r rate ) String() string {
60 return fmt.Sprintf( "%d年,%.2f %,%.2f %", r.year, r.rate0, r.rate1 )
61 }
62
63 func ( rt rates ) list( w http.ResponseWriter, r *http.Request ) {
64 for i, v := range rt {
65 fmt.Fprintf( w, "%d,%v\n", i, v )
66 }
67 }
68