バッファからバイト文字をスライスに移した際に、string
関数を使って文字列変換しても、スライスの余りの部分(0初期化した値)も文字変換されてしまうため、それを取り除く必要がある。
buf := make([]byte, 128) // \x00で初期化される b, err := io.Read(buf) if err != nil { panic(err) } string(b) == "hello" // false strings.TrimRight(b, "\x00") == "hello" // true