You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go开发REST API实现文章ID自增时strconv.Itoa不接受int64类型值报错

问题根源

strconv.Itoa() 函数仅接收 int 类型的入参,而你通过 strconv.ParseInt() 解析得到的 lastId 是 int64 类型,Go语言不支持不同数值类型的隐式自动转换,因此会抛出类型不兼容的编译错误。

解决方案

你可以任选以下两种方案修复:

方案1:强制类型转换为int后传入

如果你的业务中ID数值不会超过int类型的上限(32位系统上限为231-1,64位系统为263-1),直接做类型转换即可:

// 仅修改报错行,将lastId转为int类型
Id: strconv.Itoa(int(lastId)),

方案2:使用int64专属的字符串转换方法

如果ID数值可能很大,推荐直接使用strconv.FormatInt处理int64类型转字符串,更稳妥:

// 替换Itoa为FormatInt,第二个参数10表示按十进制转换
Id: strconv.FormatInt(lastId, 10),

额外优化建议

你当前的代码错误处理顺序有问题:ParseInt执行后没有立刻判断错误就先操作了lastId,如果解析ID失败,会使用默认0值计算得到错误的新ID,建议调整顺序为:

lastId, err := strconv.ParseInt(Articles[len(Articles) - 1].Id, 10, 64)
// 先判断错误,出错直接返回不再执行后续逻辑
if err != nil {
    http.Error(w, "Internal Server Error", http.StatusInternalServerError)
    return
}
lastId = lastId + 1 

内容的提问来源于stack exchange,提问作者Karan Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 11:54:02