英文:
Cannot use userId (variable of type string) as int value in struct literal
问题
我正在学习使用Go创建REST API。以下是我遇到的问题。
User结构体
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,
}
错误信息
无法将类型为string的userId变量用作结构体字面值中的int值
当用户发送GET请求时:
/user/:id
我尝试了相同的方法,但也返回了错误
user := &user{
ID: strconv.Atoi(userId),
}
错误信息
strconv.Atoi(userId)返回了两个值(int, error),但期望只有一个值
英文:
Im learning to create REST APIs using Go. Here's where I am stuck.
User Struct
type user struct {
ID int `json:"id"`
FirstName string `json:"first_name"`
LastName string `json:"last_name"`
}
Here's the logic
params := httprouter.ParamsFromContext(r.Context())
userId := params.ByName("id")
user := &user{
ID: userId,
}
ERROR
cannot use userId (variable of type string) as int value in struct literal
When user sends a get request:
/user/:id
I tryed same this but it's return error also
user := &user{
ID: strconv.Atoi(int(userId)),
}
Error
2-valued strconv.Atoi(int(userId)) (value of type (int, error)) where single value is expected
答案1
得分: 1
我找到了解决方案!我使用了strconv.Atoi()
函数。
userId, err := strconv.Atoi(params.ByName("id"))
if err != nil {
fmt.Println(err)
}
user := &user{
ID: userId,
}
英文:
I found solution! I used strconv.Atoi()
userId, err := strconv.Atoi(params.ByName("id"))
if err != nil {
fmt.Println(err)
}
user := &user{
ID: userId,
}
答案2
得分: -2
我总是更喜欢使用cast.ToInt()
将字符串转换为整数。
要导入cast
包,请将以下行放在您的导入部分中:
"github.com/spf13/cast"
userId := cast.ToInt(params.ByName("id"))
user := &user{
ID: userId,
}
英文:
I always prefer cast.ToInt()
to convert a string into an int.
To import the cast
package. place the below line in your import section
"github.com/spf13/cast"
userId := cast.ToInt(params.ByName("id"))
user := &user{
ID: userId,
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论