😸
【Go】fatih/color を使用してコンソールに文字列を色付きで出力する
Go でコンソールに色付き文字列を出力したいケースがあり、 fatih/color というパッケージを試してみたところ、非常に使い勝手が良く便利だったので備忘録。
簡単な例
単純に色付き文字列を出力したいだけであれば color.{色名}()
を使用できます。
出力時には自動で末尾改行がつけられます。
引数には fmt.Printf()
と同じようにフォーマット文字列を使用できます。
main.go
package main
import (
"github.com/fatih/color"
)
func main() {
color.Black("Black")
color.Blue("Blue")
color.Cyan("Cyan")
color.Green("Green")
color.HiBlack("HiBlack")
color.HiBlue("HiBlue")
color.HiCyan("HiCyan")
color.HiGreen("HiGreen")
color.HiMagenta("HiMagenta")
color.HiRed("HiRed")
color.HiWhite("HiWhite")
color.HiYellow("HiYellow")
color.Magenta("Magenta")
color.Red("Red")
color.White("White")
color.Yellow("Yellow")
color.Red("hello %s", "world")
}
また、 color.{色名}String()
を使用することで文字列として取得できます。
main.go
package main
import (
"fmt"
"github.com/fatih/color"
)
func main() {
s := color.RedString("hello")
fmt.Printf("%#v", s) // => "\x1b[31mhello\x1b[0m"
}
様々な書式を組み合わせる例
例えば文字色だけでなく背景色をつけたり太字にしたい場合等は、カラーオブジェクトを作成する必要があります。
とはいえ特に複雑な設定は必要なく、非常に使いやすい仕様になっています。
使用できる書式についてはドキュメントを参照してください。
main.go
package main
import (
"github.com/fatih/color"
)
func main() {
// 文字色を赤、背景色を青
c := color.New(color.FgRed, color.BgBlue)
// `Add()` を使用して途中で追加することもできる
// 下線を設定
c.Add(color.Underline)
// 他にも `fmt` パッケージでお馴染みの `Print()`, `Fprint()`, `Sprint()` なども使える
c.Println("hello")
}
参考
Discussion