バイト列のバッファリングを扱う構造体でよくでてくるやつ。
疑問に思ったのは、io.Writerやio.Reader型のメソッドの引数に渡せること。「Goはインターフェースが大事!」というのを理解するまでは違和感があった。
こんなコード。引数の型がio.Writerで、byres.Buffer型の変数をNewに渡している。
最初見たら凄く気持ちが悪い^_^
func New(w io.Writer) Tracer { ...}
var buf bytes.Buffer
tracer := New(&buf)
調べたら簡単な話で、bytes.BufferがWrite()とRead()メソッドを実装しているので、
io.Writerとio.Readerインターフェースを満たすことになる。