golang终端ANSI颜色样式美化与布局插件库go-palette的使用
Golang终端ANSI颜色样式美化与布局插件库go-palette的使用
介绍
Go-Palette是一个优雅方便的ANSI颜色样式定义库,完全兼容并包装了fmt
库,用于创建美观的终端布局。
支持的颜色与格式
标准颜色
以下颜色名称可用于前景和背景:
颜色名称 | 颜色代码 |
---|---|
Black | 0 |
Red | 1 |
Green | 2 |
Yellow | 3 |
Blue | 4 |
Magenta | 5 |
Cyan | 6 |
White | 7 |
BrightBlack | 8 |
BrightRed | 9 |
BrightGreen | 10 |
BrightYellow | 11 |
BrightBlue | 12 |
BrightMagenta | 13 |
BrightCyan | 14 |
BrightWhite | 15 |
支持的前景色板
支持的背景色板
支持的文本格式
支持以下文本格式:
- Reset
- Bold
- Dim
- Italic
- Underline
- SlowBlink
- Hidden
- Strikethrough
安装
go get github.com/abusomani/go-palette
使用示例
基本导入
import (
pal "github.com/abusomani/go-palette/palette"
)
使用颜色名称示例
package main
import (
pal "github.com/abusomani/go-palette/palette"
)
func main() {
p := pal.New()
p.Println("This text is going to be in default color.")
p.SetOptions(pal.WithBackground(pal.Color(pal.BrightYellow)), pal.WithForeground(pal.Black))
p.Println("This text is going to be in black color with a yellow background.")
}
使用颜色代码示例
package main
import (
pal "github.com/abusomani/go-palette/palette"
)
func main() {
p := pal.New()
p.Println("This text is going to be in default color.")
// 我们可以使用色板中的颜色代码来设置前景和背景颜色
p.SetOptions(pal.WithBackground(pal.Color(11)), pal.WithForeground(0))
p.Println("This text is going to be in black color with a yellow background.")
}
使用特殊效果示例
package main
import (
pal "github.com/abusomani/go-palette/palette"
)
func main() {
p := pal.New(pal.WithSpecialEffects([]pal.Special{pal.Bold}))
p.Println("Bold")
p.SetOptions(pal.WithSpecialEffects([]pal.Special{pal.Dim}))
p.Println("Dim")
p.SetOptions(pal.WithSpecialEffects([]pal.Special{pal.Italic}))
p.Println("Italic")
p.SetOptions(pal.WithSpecialEffects([]pal.Special{pal.Underline}))
p.Println("Underline")
p.SetOptions(pal.WithSpecialEffects([]pal.Special{pal.SlowBlink}))
p.Println("SlowBlink")
p.SetOptions(pal.WithSpecialEffects([]pal.Special{pal.Hidden}))
p.Print("Hidden")
p.SetOptions(pal.WithDefaults())
p.Println("<-Hidden")
p.SetOptions(pal.WithSpecialEffects([]pal.Special{pal.Strikethrough}))
p.Println("Strikethrough")
}
重置选项示例
package main
import (
pal "github.com/abusomani/go-palette/palette"
)
func main() {
p := pal.New()
p.Println("This text is going to be in default color.")
// 我们可以使用色板中的颜色代码来设置前景和背景颜色
p.SetOptions(pal.WithBackground(pal.BrightMagenta), pal.WithForeground(pal.Black))
p.Println("This text is going to be in black color with a bright magenta background.")
p.Flush()
p.Println("This text is going to be in default color.")
}
局限性
Windows系统
Go-Palette仅提供ANSI颜色。Windows系统默认不支持ANSI。要启用ANSI颜色支持,请参考相关教程。
特殊效果在不同终端中的差异
Go-Palette通过ANSI转义序列提供样式支持。不同终端的行为可能会有所不同。更多详情请参考ANSI转义代码。
许可证
Go-Palette采用MIT许可证授权。
更多关于golang终端ANSI颜色样式美化与布局插件库go-palette的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html
1 回复
更多关于golang终端ANSI颜色样式美化与布局插件库go-palette的使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
Go-Palette: Golang终端ANSI颜色样式美化与布局插件库
go-palette 是一个用于Golang终端应用的ANSI颜色样式美化与布局插件库,它提供了简单易用的API来为终端输出添加颜色、样式和布局控制。
安装
go get github.com/abusizhishen/go-palette
基本使用
1. 基本颜色和样式
package main
import (
"fmt"
"github.com/abusizhishen/go-palette"
)
func main() {
p := palette.NewPalette()
// 前景色
fmt.Println(p.Red("红色文本"))
fmt.Println(p.Green("绿色文本"))
fmt.Println(p.Blue("蓝色文本"))
// 背景色
fmt.Println(p.BgRed("红色背景"))
fmt.Println(p.BgGreen("绿色背景"))
// 样式
fmt.Println(p.Bold("加粗文本"))
fmt.Println(p.Underline("下划线文本"))
fmt.Println(p.Italic("斜体文本"))
// 组合使用
fmt.Println(p.Bold(p.Red("红色加粗文本")))
fmt.Println(p.BgBlue(p.Underline(p.Green("绿色下划线蓝色背景"))))
}
2. 自定义颜色
func main() {
p := palette.NewPalette()
// RGB颜色
fmt.Println(p.Color(255, 0, 0)("自定义红色"))
fmt.Println(p.BgColor(0, 255, 0)("自定义绿色背景"))
// 16进制颜色
fmt.Println(p.HexColor("#FF0000")("16进制红色"))
fmt.Println(p.BgHexColor("#00FF00")("16进制绿色背景"))
}
3. 布局控制
func main() {
p := palette.NewPalette()
// 居中对齐
fmt.Println(p.Center("居中对齐的文本", 50))
// 右对齐
fmt.Println(p.Right("右对齐的文本", 50))
// 填充
fmt.Println(p.Fill("填充文本", "-", 50))
// 进度条
fmt.Println(p.ProgressBar(30, 100, 50))
}
4. 表格输出
func main() {
p := palette.NewPalette()
headers := []string{"ID", "Name", "Age"}
rows := [][]string{
{"1", "Alice", "25"},
{"2", "Bob", "30"},
{"3", "Charlie", "35"},
}
// 简单表格
fmt.Println(p.Table(headers, rows))
// 带样式的表格
fmt.Println(p.TableWithStyle(headers, rows,
palette.TableStyle{
HeaderFg: palette.White,
HeaderBg: palette.Blue,
CellFg: palette.Black,
CellBg: palette.White,
BorderColor: palette.Red,
}))
}
5. 主题使用
func main() {
p := palette.NewPalette()
// 定义主题
myTheme := palette.Theme{
"success": p.Green,
"error": p.Bold(p.Red),
"warning": p.Yellow,
"info": p.Blue,
}
// 使用主题
fmt.Println(myTheme["success"]("操作成功!"))
fmt.Println(myTheme["error"]("发生错误!"))
fmt.Println(myTheme["warning"]("警告信息"))
fmt.Println(myTheme["info"]("提示信息"))
}
高级功能
1. 自定义样式组合
func main() {
p := palette.NewPalette()
// 创建自定义样式
highlight := p.Compose(
p.Bold,
p.Underline,
p.Color(255, 215, 0), // 金色
)
fmt.Println(highlight("高亮显示的重要文本"))
}
2. 响应式宽度处理
func main() {
p := palette.NewPalette()
// 获取终端宽度
width := p.GetTerminalWidth()
// 根据终端宽度调整输出
fmt.Println(p.Center("自适应宽度的标题", width))
fmt.Println(p.Fill("", "=", width))
}
3. 动画效果
func main() {
p := palette.NewPalette()
// 旋转动画
spinner := p.NewSpinner("处理中...")
spinner.Start()
// 模拟耗时操作
time.Sleep(3 * time.Second)
spinner.Stop()
fmt.Println(p.Green("处理完成!"))
}
注意事项
- 不是所有终端都支持所有ANSI颜色和样式,使用时应注意兼容性
- 在Windows上可能需要启用ANSI支持或使用兼容层
- 复杂的布局和样式可能会影响性能,特别是在大量输出时
go-palette 提供了丰富的功能来美化终端输出,通过组合各种样式和布局方法,可以创建出专业且美观的命令行界面。