我正在使用Tabwriter,但无法使其与颜色配合使用。我正在使用“ github.com/fatih/color”包。
基本上,问题是我需要调用tabwriter w.Flush()才能获得要渲染的颜色...如果我没有调用冲洗,则无法切换颜色。
依次调用Tabwriter格式化的Flush螺钉。
关于如何将两者结合的任何想法?
package main
import "fmt"
import "text/tabwriter"
import "os"
import "github.com/fatih/color"
func main() {
w := new(tabwriter.Writer)
w.Init(os.Stderr, 0, 8, 0, '\t', 0)
color.Set(color.FgGreen)
fmt.Fprintln(w, "ID\tNAME\tSIZE\tFIELD1\tSTATUS\tSTATE")
// ------> Calling w.Flush() here cases problems.
color.Set(color.FgYellow)
fmt.Fprintln(w, "8617833164795356724\tfoo1\t1.1 Gb\t3\tsome_status\tsome_state")
fmt.Fprintln(w)
w.Flush()
}
Run Code Online (Sandbox Code Playgroud)
尽管接受的答案是这样说的,但有可能,您只需要非常小心字段长度。
用颜色+重置代码包裹每个“字段”(即特定的行和列)。如果所有代码的字符串长度相同,tabwriter会给你一个很好的结果。
我在这里有一个粗略的演示:https : //play.golang.org/p/r6GNeV1gbH
我在演示中没有这样做,但您还应该添加背景代码(您可以像 中一样将它们简单地添加在一起RedText + YellowBackground),提供默认背景。通过这种方式,所有内容都将具有相同的长度,并且您还将获得后台支持。
请注意,我是初学者 Go 程序员。我并不声称我的代码有任何好处。
你不能。
使用该color.Color.SprintFunc()方法获取一个函数并使用该函数包装您的字符串。
这也不起作用,因为颜色是使用 无法识别的特殊字符序列设置的tabwriter,因此该行将缩短标记长度的两倍(一个用于设置颜色,一个用于返回标准颜色)。
编写一个替代制表符(算法并不复杂)来识别颜色字符序列并忽略它。
| 归档时间: |
|
| 查看次数: |
1298 次 |
| 最近记录: |