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

时间:2017-09-08 00:27:54

标签: 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"])

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

1 个答案:

答案 0 :(得分:5)

类型断言(somevar.(sometype))返回(sometype, bool),因此您可以检查bool。惯用的是:

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