golang 不输出点颜色,确实看着不舒服,毕竟大家都爱有彩色的,今天来聊聊golang中颜色的时。
造轮子
golang 终端色彩输出,我们可以这样
package main
import (
"fmt"
)
func main() {
fmt.Printf("\033[1;31;40m%s\033[0m\n", "红色的")
}
在VsCode中运行下
挺正常的,那编译成exe在cmd下运行下
输出的是什么鬼玩意。查资料得知,cmd要调用windows的API才可以。
package main
import (
"fmt"
"syscall"
)
func main() {
kernel32 := syscall.NewLazyDLL("kernel32.dll")
proc := kernel32.NewProc("SetConsoleTextAttribute")
proc.Call(uintptr(syscall.Stdout), uintptr(6))
fmt.Println("黄色")
handle, _, _ := proc.Call(uintptr(syscall.Stdout), uintptr(7))
CloseHandle := kernel32.NewProc("CloseHandle")
CloseHandle.Call(handle)
}
如果用上面的方法,确实挺麻烦,还要判断系统类型等等。重点来了,这里推荐两个golang终端色彩输出的库,免得自己造轮子。
fatih/color
强烈推荐github.com/fatih/color
使用简单,没有太多的问题
gookit/color
若不考虑 win7 下cmd颜色输出异常问题。这个个人感觉还是更好用一点,就是win7 cmd颜色输出有问题,已经提交过bug,作者好像一直没修改。
总结
终端颜色输出,自己写也可以,但是有好用的,何必自己造轮子呢?