七叶笔记 » golang编程 » 让golang终端输出点儿颜色

让golang终端输出点儿颜色

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,作者好像一直没修改。

总结

终端颜色输出,自己写也可以,但是有好用的,何必自己造轮子呢?

相关文章