在Go中输入类型时检查错误

Eth*_*han -1 go jwt

我目前正在为我的Go网络应用程序添加JWT身份验证,当涉及到go中的类型转换和自动恐慌(如果它失败)时我有一些担忧.我的代码如下所示:
(c是上下文包)

user := c.Get("user")
token := user.(*jwt.Token)

claims := token.Claims.(jwt.MapClaims)

fmt.Println("Username: ", claims["name"], "User ID: ", claims["jti"])
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我在多行上使用了类型转换,但如果此操作失败,它将会出现紧急情况并最终导致服务器崩溃.在这种情况下有没有可能的方法来检查错误?
我对Go的Web开发很新,所以我很抱歉,所有的帮助表示赞赏!

Ada*_*ith 5

键入assertions(somevar.(sometype))返回a (sometype, bool),所以你可以检查bool.惯用的是:

token, ok := user.(*jwt.Token)
if !ok {
    // handle the fail case. `token` is nil here.
}
Run Code Online (Sandbox Code Playgroud)