我正在構建一個 CLI 應用程式,它在基于 CLI 的選單上與人類互動。例如 示例選單圖片
我使用以下包https://github.com/dixonwille/wmenu撰寫了代碼 。
它按預期作業,但我不知道如何檢索所選選單項的索引并將其回傳給 main() 函式。
我非常感謝任何提示或有用的鏈接。
謝謝
多發性硬化癥
import (
"fmt"
"log"
"os"
"github.com/dixonwille/wmenu"
)
func createMenu(p string, m []string) {
optFunc := func(option wmenu.Opt) error {
fmt.Println("")
fmt.Println("Option chosen: ", option.ID, option.Text)
return nil
}
menu := wmenu.NewMenu(p)
menu.ChangeReaderWriter(os.Stdin, os.Stdout, os.Stderr)
for i, m := range m {
menu.Option(m, i, false, optFunc)
}
err := menu.Run()
if err != nil {
log.Fatal(err)
}
// return i or option.ID
// index of a menu item
}
func main() {
prompt := "Select a Fruit"
menuitems := []string{"Apple", "Orange", "Mango"}
createMenu(prompt, menuitems)
// index := createMenu(prompt, menuitems)
// fmt.Println("Fruit Selected ",menuitems[index])
}
uj5u.com熱心網友回復:
這是具有最小更改的不言自明的作業示例:
package main
import (
"fmt"
"log"
"os"
"github.com/dixonwille/wmenu"
)
type userInput struct {
option wmenu.Opt
}
func (u *userInput) optFunc(option wmenu.Opt) error {
u.option = option
return nil
}
func createMenu(p string, m []string, u *userInput) {
menu := wmenu.NewMenu(p)
menu.ChangeReaderWriter(os.Stdin, os.Stdout, os.Stderr)
for i, m := range m {
menu.Option(m, i, false, u.optFunc)
}
err := menu.Run()
if err != nil {
log.Fatal(err)
}
}
func main() {
prompt := "Select a Fruit"
menuitems := []string{"Apple", "Orange", "Mango"}
u := &userInput{}
createMenu(prompt, menuitems, u)
fmt.Println("")
fmt.Println("Option chosen: ", u.option.ID, u.option.Text)
}
不過,我不認為這是圖書館設計的使用方式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/362230.html
標籤:走
