golang新时代ASCII艺术牛插件库Neo-cowsay的使用
Golang新时代ASCII艺术牛插件库Neo-cowsay的使用
关于Neo Cowsay
Neo Cowsay是用Go语言编写的,它扩展了原始的cowsay功能,添加了更多有趣的选项,并且可以作为库使用。
______________
< I'm Neo cows >
--------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
关于Cowsay
根据原始手册描述:
cowsay is a configurable talking cow, written in Perl. It operates
much as the figlet program does, and it written in the same spirit
of silliness.
与原版的区别
- 速度更快
- 支持UTF8
- 添加了新的牛文件
- 牛文件以二进制形式提供
- 随机选择牛文件选项
- 提供命令行模糊查找器来搜索任何牛文件
- 着色过滤选项
- 超级模式
使用方式
作为命令行工具
基本命令格式:
cow{say,think} version 2.0.0, (c) 2021 codehex
Usage: cowsay [-bdgpstwy] [-h] [-e eyes] [-f cowfile] [--random]
[-l] [-n] [-T tongue] [-W wrapcolumn]
[--bold] [--rainbow] [--aurora] [--super] [message]
Original Author: (c) 1999 Tony Monroe
普通模式:
$ cowsay Hello
_______
< Hello >
-------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
Borg模式:
$ cowsay -b Hello
_______
< Hello >
-------
\ ^__^
\ (==)\_______
(__)\ )\/\
||----w |
|| ||
作为库使用
示例代码:
package main
import (
"fmt"
cowsay "github.com/Code-Hex/Neo-cowsay/v2"
)
func main() {
say, err := cowsay.Say(
"Hello",
cowsay.Type("default"),
cowsay.BallonWidth(40),
)
if err != nil {
panic(err)
}
fmt.Println(say)
}
安装方法
Windows用户通过Scoop
$ scoop install neo-cowsay
Windows用户通过Winget
$ winget install neo-cowsay
Mac和Linux用户通过Homebrew
$ brew update
$ brew install Code-Hex/tap/neo-cowsay
二进制文件
可以从GitHub releases页面下载
作为库安装
$ go get github.com/Code-Hex/Neo-cowsay/v2
安装命令行工具
安装cowsay:
$ go install github.com/Code-Hex/Neo-cowsay/cmd/v2/cowsay@latest
安装cowthink:
$ go install github.com/Code-Hex/Neo-cowsay/cmd/v2/cowthink@latest
许可证
(艺术许可证或GNU通用公共许可证)
作者
Neo Cowsay: codehex Original: © 1999 Tony Monroe
更多关于golang新时代ASCII艺术牛插件库Neo-cowsay的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html
更多关于golang新时代ASCII艺术牛插件库Neo-cowsay的使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
使用Neo-cowsay创建Golang ASCII艺术
Neo-cowsay是一个现代化的Golang ASCII艺术生成库,它是传统cowsay工具的升级版,提供了更多功能和更好的用户体验。下面我将详细介绍如何使用这个库。
安装Neo-cowsay
首先,你需要安装这个库:
go get github.com/Code-Hex/Neo-cowsay
基础用法
package main
import (
"fmt"
"github.com/Code-Hex/Neo-cowsay"
)
func main() {
// 最简单的用法
cow, err := cowsay.Say(
"Hello, Gopher!",
cowsay.Type("default"),
)
if err != nil {
panic(err)
}
fmt.Println(cow)
}
这将输出一个经典的ASCII牛,说出"Hello, Gopher!"。
自定义选项
Neo-cowsay提供了多种自定义选项:
package main
import (
"fmt"
"github.com/Code-Hex/Neo-cowsay"
)
func main() {
// 使用自定义选项
cow, err := cowsay.Say(
"Go is awesome!",
cowsay.Type("stegosaurus"), // 选择恐龙而不是牛
cowsay.BallonWidth(40), // 设置对话框宽度
cowsay.Eyes("^^"), // 自定义眼睛
cowsay.Tongue("U"), // 自定义舌头
cowsay.Thinking(), // 思考模式(使用气泡而不是对话框)
)
if err != nil {
panic(err)
}
fmt.Println(cow)
}
可用角色列表
Neo-cowsay提供了多种预设角色:
package main
import (
"fmt"
"github.com/Code-Hex/Neo-cowsay"
)
func main() {
// 列出所有可用角色
chars := cowsay.Characters()
for _, char := range chars {
fmt.Println(char)
}
// 示例输出一些不同角色
msg := "Golang rocks!"
// 使用龙角色
dragon, _ := cowsay.Say(msg, cowsay.Type("dragon"))
fmt.Println(dragon)
// 使用大象角色
elephant, _ := cowsay.Say(msg, cowsay.Type("elephant"))
fmt.Println(elephant)
}
高级功能
1. 自定义角色
package main
import (
"fmt"
"github.com/Code-Hex/Neo-cowsay"
)
func main() {
// 自定义ASCII艺术角色
myCow := `
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
`
cow, err := cowsay.Say(
"My custom cow!",
cowsay.Cow(myCow),
)
if err != nil {
panic(err)
}
fmt.Println(cow)
}
2. 多行文本处理
package main
import (
"fmt"
"github.com/Code-Hex/Neo-cowsay"
)
func main() {
longText := `Golang is a statically typed, compiled programming language
designed at Google by Robert Griesemer, Rob Pike, and Ken Thompson.
It is syntactically similar to C, but with memory safety,
garbage collection, structural typing, and CSP-style concurrency.`
cow, err := cowsay.Say(
longText,
cowsay.BallonWidth(50),
cowsay.Type("whale"),
)
if err != nil {
panic(err)
}
fmt.Println(cow)
}
3. 随机角色
package main
import (
"fmt"
"github.com/Code-Hex/Neo-cowsay"
)
func main() {
// 随机选择一个角色
cow, err := cowsay.Say(
"Surprise!",
cowsay.Random(),
)
if err != nil {
panic(err)
}
fmt.Println(cow)
}
实际应用示例
以下是一个完整的CLI工具示例,可以接受用户输入并显示ASCII艺术:
package main
import (
"bufio"
"fmt"
"os"
"strings"
"github.com/Code-Hex/Neo-cowsay"
)
func main() {
reader := bufio.NewReader(os.Stdin)
fmt.Print("请输入要显示的文字: ")
text, _ := reader.ReadString('\n')
text = strings.TrimSpace(text)
fmt.Print("请输入角色类型(回车使用默认): ")
charType, _ := reader.ReadString('\n')
charType = strings.TrimSpace(charType)
var options []cowsay.Option
options = append(options, cowsay.BallonWidth(30))
if charType != "" {
options = append(options, cowsay.Type(charType))
}
cow, err := cowsay.Say(text, options...)
if err != nil {
fmt.Printf("错误: %v\n", err)
return
}
fmt.Println(cow)
}
总结
Neo-cowsay为Golang开发者提供了一个功能丰富且易于使用的ASCII艺术生成工具。它的主要特点包括:
- 多种预设角色可选
- 完全可自定义的眼睛、舌头等特征
- 支持思考和说话两种模式
- 自动换行处理长文本
- 简单的API设计
无论是用于命令行工具增加趣味性,还是为应用程序添加独特的输出风格,Neo-cowsay都是一个不错的选择。