如何检查从golang中的tabwriter.Writer返回的响应

如何检查从golang中的tabwriter.Writer返回的响应,go,Go,我在给tabwriter写东西Writer对象 w := tabwriter.NewWriter(os.Stdout, 5, 1, 3, ' ', 0) fmt.Fprintf(w, "%v\t%v\t\n", somevalue1, somevalue2) 我可以使用w.Flush在控制台中打印w中的数据 是否有任何方法可以将w中的值作为字符串放在一个位置,并将其与某个值进行比较 我想将w中的内容与一些数据进行比较。您可以实现自己的io。编写器: 然后可以将*W的实例传递给t

我在给tabwriter写东西Writer对象

    w := tabwriter.NewWriter(os.Stdout, 5, 1, 3, ' ', 0)
    fmt.Fprintf(w, "%v\t%v\t\n", somevalue1, somevalue2)
我可以使用w.Flush在控制台中打印w中的数据 是否有任何方法可以将w中的值作为字符串放在一个位置,并将其与某个值进行比较


我想将w中的内容与一些数据进行比较。

您可以实现自己的io。编写器:

然后可以将*W的实例传递给tabwriter.NewWriter:

正如@Tim所建议的,为了获得更好的性能,您应该使用*bytes.Buffer,它已经实现了io.Writer:


我建议只使用bytes.Buffer,而不是自己实现那个方法。不要像我一样忘记w.Flush。
type W []byte

func (w *W) Write(b []byte) (int, error) {
    *w = append(*w, b...)
    return len(b), nil
}
sw := &W{}
w := tabwriter.NewWriter(sw, 5, 1, 3, ' ', 0)
fmt.Fprintf(w, "%v\t%v\t\n", somevalue1, somevalue2)

// get the string value from sw
str := string(*sw)
var b bytes.Buffer
w := tabwriter.NewWriter(&b, 0, 0, 1, '.', 0)
// ...
fmt.Println(b.String())