Mercurial > mercurial > hgweb_golang.cgi
view src/httpsv/httpsv.go @ 38:05bdd37e3000
add channel-sample.
author | pyon@macmini |
---|---|
date | Sat, 11 Jan 2020 17:00:30 +0900 |
parents | de451fa0c9cd |
children |
line wrap: on
line source
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 ) } }