1 Star 0 Fork 1

yss930819/gf-ex

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
scan.go 1.58 KB
一键复制 编辑 原始数据 按行查看 历史
package yscmd
import (
"fmt"
"gitee.com/kmyss/gf-ex/yslog"
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/os/gcmd"
"github.com/gogf/gf/text/gstr"
"github.com/gogf/gf/util/gconv"
)
func ScanAndLog(info ...interface{}) string {
r := gcmd.Scan(info...)
out := fmt.Sprint(info...) + r
yslog.PrintToFile(out)
return r
}
// ScanWithDefault 获取输入参数和默认值
func ScanWithDefault(defaultValue string, info ...string) string {
r := ScanAndLog(fmt.Sprintf("%s[默认值:%s]", info[0], defaultValue))
switch r {
case "":
return defaultValue
default:
return r
}
}
// ScanYesOrNo 选择 yes 或者 no
// 输入 y 或不输入 返回 True. 输入 n 返回 False
func ScanYesOrNo(info ...interface{}) bool {
s := ScanAndLog(info...)
for {
switch gstr.ToLower(gstr.TrimAll(s)) {
case "", "y":
return true
case "n":
return false
}
s = ScanAndLog("[ERROR] 输入错误请重新输入:")
}
}
// SelectOne 从选项中选择一个出来
// 默认选择 0
func SelectOne(options []string, msg string) (string, int) {
if len(options) == 1 {
return options[0], 0
}
if len(options) == 0 {
return "", -1
}
out := ""
for i, option := range options {
out += fmt.Sprintf("%d: %s \n", i+1, option)
}
if !g.IsEmpty(msg) {
out += fmt.Sprintf("* %s (默认:1) :", msg)
} else {
out += "* 请选择 (默认:1) :"
}
scan := gcmd.Scan(out)
for {
i := -1
switch scan {
case "":
i = 1
default:
i = gconv.Int(scan)
}
if i <= 0 || i > len(options) {
scan = gcmd.Scan("* 输入错误请重新输入:")
} else {
return options[i-1], i - 1
}
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/kmyss/gf-ex.git
git@gitee.com:kmyss/gf-ex.git
kmyss
gf-ex
gf-ex
v0.8.0

搜索帮助