isucon3 とかでも使ったけど string から io.Reader および io.Writer を生成する方法に毎回ハマる気がしたのでメモ.
たとえば s という文字列を io.Reaer にして buf という io.Writer に書き込む場合
https://github.com/nise-nabe/isucon2013-go/blob/master/app.go#L97
var buf bytes.Buffer p := markdown.NewParser(nil) p.Markdown(bytes.NewBufferString(s), markdown.ToHTML(&buf)) return template.HTML(buf.String())
例えば git コマンドで HEAD のリビジョンを取得する場合に io.Writer に 外部コマンドの出力結果を書き込む場合
cmd := exec.Command("git", "rev-parse", "HEAD") cmd.Dir = build.Default.GOPATH + "/src/github.com/nise-nabe/isucon2013-go" var out bytes.Buffer cmd.Stdout = &out err := cmd.Run() if err != nil { log.Fatal(err) } return out.String()