登录
首页 >  Golang >  Go问答

switch-case语句的匹配表达式

来源:stackoverflow

时间:2024-03-05 10:27:18 353浏览 收藏

你在学习Golang相关的知识吗?本文《switch-case语句的匹配表达式》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作都是不可或缺的哦!

问题内容

我需要编写一个简单的电报机器人。 除了一件事之外,一切正常。当我编写命令 \task#1 - 它应该给我它的链接,\task#2 - 应该给我任务2的链接,等等。 如何更好地安排这个或如何为正则表达式制作 switch case?

import (
    "log"
    "strconv"
//     "regexp"
    "github.com/go-telegram-bot-api/telegram-bot-api"
)

func main() {
    bot, err := tgbotapi.NewBotAPI("")
    tasks := [...]string{"Ansible assignment", "Bash script"}
    links := [...]string{"https://github.com/task1", "https://github.com/task2"}
//  var currentTask = regexp.MustCompile(`^task#.`)

    if err != nil {
        log.Panic(err)
    }

    bot.Debug = true

    log.Printf("Authorized on account %s", bot.Self.UserName)

    u := tgbotapi.NewUpdate(0)
    u.Timeout = 60

    updates, err := bot.GetUpdatesChan(u)

    for update := range updates {
        if update.Message == nil { // ignore any non-Message Updates
            continue
        }
        log.Printf("[%s] %s", update.Message.From.UserName, update.Message.Text)


if update.Message.IsCommand() {
            msg := tgbotapi.NewMessage(update.Message.Chat.ID, "")
            switch update.Message.Command() {
            case "help":
                msg.Text = "type /sayhi or /status."
            case "homerep":
                msg.Text = "https://github.com/ :)"
            case "tasks":
                msg.ParseMode = "html"
                msg.Text = "The list of completed tasks:\n"
                for i := 0; i < len(tasks); i++ {
                    msg.Text =  msg.Text + strconv.Itoa(i+1) + ". " + tasks[i] +  "  -  " + " link" + "\n"
                }
            case update.Message.Command == "^task#.":
                msg.ParseMode = "html"
                msg.Text = "This is test"
            default:
                msg.Text = "I don't know that command"
            }
            bot.Send(msg)
        }
}
}```

正确答案


编译正则表达式并将其分配给包级变量:

var commandpat = regexp.mustcompile(`^task#.`)

修改开关以使用表达式。使用 MatchString 作为正则表达式:

switch cmd := update.Message.Command(); { // note the ; on this line!
case cmd == "help":
   ...
case cmd == "homerep":
   ...
case cmd == "tasks":
   ...
case commandPat.MatchString(cmd):
   ...

以上就是《switch-case语句的匹配表达式》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>