源码下载
本教程源码下载地址:https://github.com/zhangdapeng520/zdpgo_cobra_examples
案例说明
实现一个简单的命令行程序,能够将输入的单词转换为大写。
使用演示
执行命令:
go run .\main.go word -u -s hello
输出结果:
完整代码
main.go
package main
import (
"github.com/zhangdapeng520/zdpgo_cobra_examples/word/cmd"
"log"
)
func main() {
if err := cmd.Execute(); err != nil {
log.Fatalf("cmd.Execute() error(%v)", err)
}
}
cmd/root.go
package cmd
import "github.com/zhangdapeng520/zdpgo_cobra"
var rootCmd = &zdpgo_cobra.Command{}
func Execute() error {
return rootCmd.Execute()
}
func init() {
rootCmd.AddCommand(wordCmd)
}
cmd/word.go
核心代码都在这个里面。
package cmd
import (
"fmt"
"github.com/zhangdapeng520/zdpgo_cobra"
"strings"
)
var (
str string // 传入的字符串
isUpper bool // 转换为大小
)
func init() {
wordCmd.Flags().StringVarP(&str, "str", "s", "", "请输入单词内容")
wordCmd.Flags().BoolVarP(&isUpper, "upper", "u", false, "是否转换为大写")
}
var wordCmd = &zdpgo_cobra.Command{
Use: "word",
Short: "单词格式转换",
Long: "支持多种单词格式转换",
Run: func(cmd *zdpgo_cobra.Command, args []string) {
// 这个是运行子命令会直接触发的函数
if isUpper {
fmt.Println(strings.ToUpper(str))
}
},
}