-2

所以我开始了一个我想做一段时间的项目,我要做的第一件事是打印一个菜单,我想知道是否有更好/更好的方法来编码这段代码。为了“美化”它,我称之为我正在考虑做类似的事情

fmt.Println("You have chosen option " + input)

但是我必须为每个选择的选项调用一个不同的命名函数,所以我不确定我将如何使它工作

func main() {
    fmt.Println("Hello welcome")
    var input int
    fmt.Println("Please choose an option:")
    fmt.Scanln(&input)
    if input == 1 {
        fmt.Println("Option 1 chosen")
    } else if input == 2 {
        fmt.Println("Option 2 chosen")
    } else if input == 3 {
        fmt.Println("Option 3 chosen")
    } else if input == 4 {
        fmt.Println("Option 4 chosen")
    } else if input == 5 {
        fmt.Println("Option 5 chosen")
    } else if input == 6 {
        fmt.Println("Option 6 chosen")
    } else if input == 7 {
        fmt.Println("Option 7 chosen")
    } else if input == 8 {
        fmt.Println("Option 8 chosen")
    } else if input == 9 {
        fmt.Println("Option 9 chosen")
    } else if input == 10 {
        fmt.Println("Option 10 chosen")
    } else {
        fmt.Print("Not an option")
    }
}
4

1 回答 1

3

我建议将选项编号映射到函数,如下所示:

func func1() {
    fmt.Print("Option 1 Chosen")
}

func func2() {
    fmt.Print("Option 2 Chosen")
}

func main() {
    funcs := map[int]func() {
        1: func1,
        2: func2,
    }
    fmt.Println("Hello welcome")
    var input int
    fmt.Println("Please choose an option:")
    fmt.Scanln(&input)
    f, ok := funcs[input]
    if !ok {
        fmt.Print("Not an option")
    } else {
        f()
    }
}
于 2021-09-28T16:48:01.973 回答