为了账号安全,请及时绑定邮箱和手机立即绑定

如何让颜色与 golang tabwriter 一起使用?

如何让颜色与 golang tabwriter 一起使用?

Go
慕丝7291255 2021-12-13 18:23:39
我正在使用制表符,但无法使用颜色。我正在使用“github.com/fatih/color”包。基本上问题是我需要调用 tabwriter'sw.Flush()以便让颜色呈现......如果我没有调用刷新,我就无法切换颜色。依次调用 Flush 与 tabwriter 格式。关于如何将两者结合的任何想法?    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()    }
查看完整描述

2 回答

?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

尽管接受的答案是这样说的,但有可能,您只需要非常小心字段长度。

用颜色+重置代码包裹每个“字段”(即特定的行和列)。如果所有代码的字符串长度相同,tabwriter会给你一个很好的结果。

我在这里有一个粗略的演示:https : //play.golang.org/p/r6GNeV1gbH

//img1.sycdn.imooc.com//61b71f490001f45802260123.jpg

我在演示中没有这样做,但您还应该添加背景代码(您可以像 中一样将它们简单地添加在一起RedText + YellowBackground),提供默认背景。通过这种方式,所有内容都将具有相同的长度,并且您还将获得背景支持。

请注意,我是初学者 Go 程序员。我并不声称我的代码有任何好处。


查看完整回答
反对 回复 2021-12-13
?
莫回无

TA贡献1865条经验 获得超7个赞

简答

你不能。

天真的答案

使用该color.Color.SprintFunc()方法获取一个函数并使用该函数包装您的字符串。

真实答案

这也行不通,因为颜色是使用 无法识别的特殊字符序列设置的tabwriter,因此该行将缩短两倍标记的长度(一个用于设置颜色,另一个用于返回到标准色)。

解决方案

编写一个可识别颜色字符序列并忽略它的替代制表符(算法甚至并不复杂)。


查看完整回答
反对 回复 2021-12-13
  • 2 回答
  • 0 关注
  • 194 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号