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

golang repository.
author pyon@macmini
date Sat, 01 Oct 2016 11:16:31 +0900
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/httpsv/httpsv.go	Sat Oct 01 11:16:31 2016 +0900
@@ -0,0 +1,68 @@
+package main
+
+import (
+    "flag"
+    "fmt"
+    "html/template"
+    "log"
+    "net/http"
+    "os"
+)
+
+type rate struct {
+    year  int
+    rate0 float64
+    rate1 float64
+}
+
+type rates []rate
+
+func main() {
+
+    var s = flag.Bool( "s", false, "server mode" )
+    var p = flag.Int( "p", 8080, "port")
+    flag.Parse()
+
+    if *s {
+        host := "localhost:" + fmt.Sprintf( "%d", *p )
+        fmt.Fprintf( os.Stderr, "starting server (%d)...\n", *p )
+
+        r0 := rate{ 2001, 0.1, 0.2 }
+        r1 := rate{ 2002, 0.2, 0.3 }
+        rt := rates{ r0, r1 }
+
+        http.HandleFunc( "/", handler )
+        http.HandleFunc( "/list", rt.list )
+        log.Fatal( http.ListenAndServe( host, nil ) )
+
+    } else {
+        files := flag.Args()
+
+        if len( files ) == 3 {
+            fmt.Println( "ok" )
+        } else {
+            fmt.Fprintln( os.Stderr, "not ok" )
+        }
+    }
+}
+
+func handler( w http.ResponseWriter, r *http.Request ) {
+
+    const tmpl = `<p> Hello, Template ! </p>`
+    t := template.Must( template.New( "hoge" ).Parse( tmpl ) )
+    err := t.Execute( w, nil ); if err != nil {
+        log.Fatal( err )
+    }
+    fmt.Fprintf( w, "url.path = %q\n", r.URL.Path )
+}
+
+func ( r rate ) String() string {
+    return fmt.Sprintf( "%d年,%.2f %,%.2f %", r.year, r.rate0, r.rate1 )
+}
+
+func ( rt rates ) list( w http.ResponseWriter, r *http.Request ) {
+    for i, v := range rt {
+        fmt.Fprintf( w, "%d,%v\n", i, v )
+    }
+}
+