亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何讓顏色與 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

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

我在演示中沒有這樣做,但您還應該添加背景代碼(您可以像 中一樣將它們簡單地添加在一起RedText + YellowBackground),提供默認背景。通過這種方式,所有內容都將具有相同的長度,并且您還將獲得背景支持。

請注意,我是初學者 Go 程序員。我并不聲稱我的代碼有任何好處。


查看完整回答
反對 回復 2021-12-13
?
莫回無

TA貢獻1865條經驗 獲得超7個贊

簡答

你不能。

天真的答案

使用該color.Color.SprintFunc()方法獲取一個函數并使用該函數包裝您的字符串。

真實答案

這也行不通,因為顏色是使用 無法識別的特殊字符序列設置的tabwriter,因此該行將縮短兩倍標記的長度(一個用于設置顏色,另一個用于返回到標準色)。

解決方案

編寫一個可識別顏色字符序列并忽略它的替代制表符(算法甚至并不復雜)。


查看完整回答
反對 回復 2021-12-13
  • 2 回答
  • 0 關注
  • 193 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號