Go语言 不能将userId(字符串类型的变量)用作结构文本中的int值

zujrkrfu  于 2023-01-28  发布在  Go
关注(0)|答案(2)|浏览(213)

我正在学习用Go语言创建REST API,这就是我的难点。

    • 用户结构**
type user struct {
  ID         int    `json:"id"`
  FirstName  string `json:"first_name"`
  LastName   string `json:"last_name"`
}

"这就是逻辑"

params := httprouter.ParamsFromContext(r.Context())
userId := params.ByName("id")

user := &user{
  ID: userId,
}
    • 错误**
cannot use userId (variable of type string) as int value in struct literal

当用户发送get请求时:

/user/:id
    • 我尝试了相同的方法,但也返回错误**
user := &user{
  ID: strconv.Atoi(int(userId)),
}
    • 错误**
2-valued strconv.Atoi(int(userId)) (value of type (int, error)) where single value is expected
1bqhqjot

1bqhqjot1#

我找到解决方案了!我用了strconv.Atoi()

userId, err := strconv.Atoi(params.ByName("id"))
if err != nil {
  fmt.Println(err)
}

user := &user{
  ID: userId,
}
bvuwiixz

bvuwiixz2#

我总是喜欢用cast.ToInt()将字符串转换为int。
要导入cast软件包,请将以下行放在导入部分

"github.com/spf13/cast"
userId := cast.ToInt(params.ByName("id"))

user := &user{
      ID: userId,
}

相关问题