package main
import (
"fmt"
"github.com/c-bata/go-prompt"
"os"
"os/signal"
"syscall"
)
func base(d prompt.Document) []prompt.Suggest {
s := []prompt.Suggest{
{Text: "1", Description: "网卡配置"},
{Text: "2", Description: "拨号管理"},
}
return prompt.FilterHasPrefix(s, d.GetWordBeforeCursor(), true)
}
func network1(d prompt.Document) []prompt.Suggest {
s := []prompt.Suggest{
{Text: "1", Description: "网卡1"},
{Text: "2", Description: "网卡2"},
}
return prompt.FilterHasPrefix(s, d.GetWordBeforeCursor(), true)
}
func network2(d prompt.Document) []prompt.Suggest {
s := []prompt.Suggest{
{Text: "1", Description: "自动获取"},
{Text: "2", Description: "手动配置"},
}
return prompt.FilterHasPrefix(s, d.GetWordBeforeCursor(), true)
}
func input(prompt string) string {
var text string
fmt.Print(prompt)
_, err := fmt.Scan(&text)
if err != nil {
return ""
}
return text
}
func exitHandle(exitChan chan os.Signal) {
for {
select {
case sig := <-exitChan:
_ = sig
//os.Exit(1) //如果ctrl+c 关不掉程序,使用os.Exit强行关掉
}
}
}
func main() {
exitChan := make(chan os.Signal)
signal.Notify(exitChan, os.Interrupt, os.Kill, syscall.SIGTERM)
go exitHandle(exitChan)
LOOP:
fmt.Println("请选择 \n" +
"1 网卡配置 \n2 拨号管理 \n0 返回")
t := prompt.Input("> ", base)
if t == "1" {
fmt.Println("可选择 1 网卡1 2 网卡2")
t1 := prompt.Input("> ", network1)
fmt.Println("You selected 网卡" + t1)
fmt.Println("可选择 1 自动获取 2 手动配置")
t2 := prompt.Input("> ", network2)
fmt.Println("You selected 网卡" + t2)
a := input("ip:")
b := input("network: ")
fmt.Println(a)
fmt.Println(b)
}
goto LOOP
}
go 控制台 根据提示选择 go-prompt
原创
©著作权归作者所有:来自51CTO博客作者何全2022的原创作品,请联系作者获取转载授权,否则将追究法律责任

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
HMI-45-【控制台】控制台代码迁移
今天实在是看不下去控制台了,多媒体先放一下,先搞一下控制台,说好听点就是优化一下控制台控制逻辑。
qt ControlPanel 控制台 HMI 接口开发 -
rabbitMQ控制台
exchanges显示交换器列表Virtual host: 交换器所在的虚拟主机Name: 交换器名称Type: 交换器
正则表达式 postman mysql 持久化 虚拟主机 -
RocketMQ控制台
参考链接:RocketMQ之console监控平台使用详解(三) - 老郭种树-老郭种树 二、模块 1.O
java-rocketmq rocketmq java 消息队列 发送消息