以表格形式打印数据

But*_*ly 1 go

我有一个代码,可以将值打印到 3 列,但我无法在直列中打印它们

fmt.Printf("%d       | %.1f      | %.5f      | \n", int(i), x, val)
Run Code Online (Sandbox Code Playgroud)

我得到这个:

0       | 0.0      | error      | 
1       | 90.0      | error      |
2       | 180.0      | -0.00000      |
3       | 270.0      | 3.94795      |
4       | 360.0      | error      |
5       | 450.0      | error      |
6       | 540.0      | -0.00000      |
7       | 630.0      | 3.94795      |
8       | 720.0      | error      |
Run Code Online (Sandbox Code Playgroud)

我找不到在 go 中执行此操作的方法。

小智 5

你可以看看tabwriter

tabwriter 包实现了一个写入过滤器 (tabwriter.Writer),它将输入中的选项卡式列转换为正确对齐的文本。

package main

import (
    "fmt"
    "os"
    "text/tabwriter"
)

func main() {
    w := tabwriter.NewWriter(os.Stdout, 10, 1, 1, ' ', tabwriter.Debug)
    fmt.Fprintf(w, "%d\t%v\t%v\t\n", 0, 0.0, "error")
    fmt.Fprintf(w, "%d\t%v\t%v\t\n", 0, 90.0, "error")
    fmt.Fprintf(w, "%d\t%v\t%v\t\n", 7, 630.0, 3.94795)
    w.Flush()
}
Run Code Online (Sandbox Code Playgroud)

https://go.dev/play/p/_u5W46AZ5sq