为了账号安全,请及时绑定邮箱和手机立即绑定

不能使用 (type interface{}) 作为类型 []Type

不能使用 (type interface{}) 作为类型 []Type

Go
哈士奇WWW 2022-05-23 17:11:49
我有这个代码:  requestHistory := claims["request_history"]  if requestHistory == nil {     requestHistory = []float64{}  }  requestHistory, ok = requestHistory.([]float64)  if !ok {    return getBytes(http.StatusForbidden, cptypes.ErrorResponseData{      ErrId:  "7d700df9-6cc9-447c-a8ce-37701fd71a8c",      Reason: "missing created_at value in jwt claims.",    })  }  requestHistory = append(requestHistory, float64(time.Now().Unix()))  // error here!  if len(requestHistory) > 25 {   // error here too!      //  }我无法弄清楚为什么会收到此错误:不能使用“requestHistory”(类型接口{})作为类型 []Type和len 的参数无效这种重新分配似乎很明显: requestHistory, ok = requestHistory.([]float64)是不是实际上在范围下面呢?这里发生了非常奇怪的golang事情
查看完整描述

1 回答

?
温温酱

TA贡献1752条经验 获得超4个赞

这是一些奇怪的 golang 事情:


  requestHistory := claims["request_history"]    // 1


  if requestHistory == nil {

     requestHistory = []float64{}

  }


  requestHistory, ok = requestHistory.([]float64)   // 2

标记为 // 2 的行不会将变量重新分配给新类型,它保持interface{}从第 // 1 行声明的原始类型


最终这就是编程错误的原因,正确的做法是从这里开始:


requestHistory, ok := claims["request_history"].([]interface{})

claims类型在哪里map[string]interface{}


查看完整回答
反对 回复 2022-05-23
  • 1 回答
  • 0 关注
  • 222 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号