在GO中打印表格的有效方法

弗雷德

我想知道一种在GO中打印表格的简单有效的方法。我发现的解决方案有效,但确实很丑陋。

很多坦克!

outfile := "file.tsv"
f, err := os.Create(outfile)var buffer bytes.Buffer

            buffer.WriteString(a[i])
            buffer.WriteString("\t")
            buffer.WriteString(a[j])
            buffer.WriteString("\t")
            buffer.WriteString(strconv.FormatFloat(x, 'f', 4, 64))
            buffer.WriteString("\n")
            // // write results to outfile
            f.WriteString(buffer.String())
彼得·索

例如,

package main

import (
    "encoding/csv"
    "fmt"
    "os"
    "strconv"
)

func main() {
    outfile := "file.tsv"
    f, err := os.Create(outfile)
    if err != nil {
        fmt.Println(err)
        os.Exit(1)
    }
    defer f.Close()
    w := csv.NewWriter(f)
    defer w.Flush()
    w.Comma = '\t'

    a := []string{"a", "b"}
    i, j := 0, 1
    x := float64(2.7)

    // Write row.
    err = w.Write(
        []string{
            a[i], a[j],
            strconv.FormatFloat(x, 'f', 4, 64),
        },
    )
    if err != nil {
        fmt.Println(err)
    }
}

输出:

$ cat file.tsv
a   b   2.7000
$

如果您使用goroutine,则此版本使用互斥量来保护csv.Writer。

package main

import (
    "encoding/csv"
    "fmt"
    "os"
    "strconv"
    "sync"
)

type csvWriter struct {
    w *csv.Writer
    m sync.Mutex
}

func (c *csvWriter) write(rec []string) error {
    c.m.Lock()
    defer c.m.Unlock()
    return c.w.Write(rec)
}

func (c *csvWriter) flush() {
    c.m.Lock()
    defer c.m.Unlock()
    c.w.Flush()
}

func main() {
    outfile := "file.tsv"
    f, err := os.Create(outfile)
    if err != nil {
        fmt.Println(err)
        os.Exit(1)
    }
    defer f.Close()
    w := csvWriter{w: csv.NewWriter(f)}
    defer w.flush()
    w.w.Comma = '\t'

    a := []string{"a", "b"}
    i, j := 0, 1
    x := float64(2.7)

    // Write row.
    err = w.write(
        []string{
            a[i], a[j],
            strconv.FormatFloat(x, 'f', 4, 64),
        },
    )
    if err != nil {
        fmt.Println(err)
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在没有模块的python中打印表格

来自分类Dev

在表格中搜索的最有效方法

来自分类Dev

如何在slidify中打印表格?

来自分类Dev

如何在Delphi中打印表格

来自分类Dev

在 .net 中的预印表格上打印

来自分类Dev

如何使用有效表格的方法

来自分类Dev

只有在打印表格后,表格之前的空间

来自分类Dev

使用awk,sed或其他方法从海量文件中打印行的有效方法?

来自分类Dev

如何在针织衫中打印表格

来自分类Dev

在Windows应用程序中打印表格

来自分类Dev

如何在 Python 中打印表格字典

来自分类Dev

成对打印表格

来自分类Dev

在Jsp中打印字符串数组的Arraylist的最有效方法是什么?

来自分类Dev

表格在Firefox中无法响应,在Chrome中有效

来自分类Dev

Python:打印列表的最有效方法是什么?

来自分类Dev

在Python中仅打印有效数字

来自分类Dev

在Go中读取请求有效载荷?

来自分类Dev

如何打印表中的所有行,而不是使用PHP?

来自分类Dev

如何使用空手道 API 中的打印语句打印表格数据?

来自分类Dev

无法更新表格,但选择有效

来自分类Dev

有效地比较表格

来自分类Dev

如何使用Javascript打印表格?

来自分类Dev

PHP函数以HTML打印表格

来自分类Dev

在点击时无法打印表格数据

来自分类Dev

获取JTable以打印表格格式

来自分类Dev

在点击时无法打印表格数据

来自分类Dev

使用鼠尾草数学打印表格

来自分类Dev

jQuery append()无法正确打印表格

来自分类Dev

在javascript中获取数字的最低有效位的最有效方法是什么?