changed playground to make it less error prone and easier to add programs

This commit is contained in:
John O'Keefe 2023-12-20 22:01:54 -05:00
parent 984bfa9ae1
commit 883e0e2e27

View File

@ -8,56 +8,118 @@ import (
) )
func main() { func main() {
type program struct {
name string
launchFunction func()
}
programs := []program{
{
name: "Pass or Fail",
launchFunction: func() {
passFail()
},
},
{
name: "Guessing Game",
launchFunction: func() {
guess()
},
},
{
name: "Shopping List",
launchFunction: func() {
shopping()
},
},
{
name: "Commandline Test",
launchFunction: func() {
terminalTest()
},
},
{
name: "Wall Area",
launchFunction: func() {
wallArea()
},
},
{
name: "myIntPointer",
launchFunction: func() {
myIntPointer()
},
},
{
name: "Double",
launchFunction: func() {
double()
},
},
{
name: "Convert To Celsius",
launchFunction: func() {
toCelsius()
},
},
{
name: "Get the Average My Solution",
launchFunction: func() {
averageMySolution()
},
},
{
name: "Get the Average Head First Solution",
launchFunction: func() {
averageHeadFirstSolution()
},
},
{
name: "Get the Average Variadic",
launchFunction: func() {
averageVariadic()
},
},
{
name: "Slices",
launchFunction: func() {
slices()
},
},
{
name: "Variadic Functions",
launchFunction: func() {
variadic()
},
},
{
name: "Count Votes",
launchFunction: func() {
countVotes()
},
},
{
name: "Magazine Subscribers",
launchFunction: func() {
magazineSubscribers()
},
},
}
menu := wmenu.NewMenu("Choose a program.") menu := wmenu.NewMenu("Choose a program.")
menu.Action(func(opts []wmenu.Opt) error { menu.Action(func(opts []wmenu.Opt) error {
fmt.Printf("You chose " + opts[0].Text + ". Launching...\n") fmt.Printf("You chose " + opts[0].Text + ". Launching...\n")
switch opts[0].Text { for _, v := range programs {
case "Pass or Fail": if v.name == opts[0].Text {
passFail() v.launchFunction()
case "Guessing Game": }
guess()
case "Shopping List":
shopping()
case "Commandline Test":
terminalTest()
case "Wall Area":
wallArea()
case "myIntPointer":
myIntPointer()
case "Double":
double()
case "Convert To Celsius":
toCelsius()
case "Get the Average My Solution":
averageMySolution()
case "Get the Average Head First Solution":
averageHeadFirstSolution()
case "Get the Average Variadic":
averageVariadic()
case "Slices":
slices()
case "Variadic Functions":
variadic()
case "Count Votes":
countVotes()
} }
return nil return nil
}) })
menu.PadOptionID() menu.PadOptionID()
menu.Option("Pass or Fail", nil, false, nil) for _, option := range programs {
menu.Option("Guessing Game", nil, false, nil) menu.Option(option.name, nil, false, nil)
menu.Option("Shopping List", nil, false, nil) }
menu.Option("Commandline Test", nil, false, nil)
menu.Option("Wall Area", nil, false, nil)
menu.Option("myIntPointer", nil, false, nil)
menu.Option("Double", nil, false, nil)
menu.Option("Convert To Celsius", nil, false, nil)
menu.Option("Get the Average My Solution", nil, false, nil)
menu.Option("Get the Average Head First Solution", nil, false, nil)
menu.Option("Get the Average Variadic", nil, false, nil)
menu.Option("Slices", nil, false, nil)
menu.Option("Variadic Functions", nil, false, nil)
menu.Option("Count Votes", nil, false, nil)
err := menu.Run() err := menu.Run()
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)