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

Go gRPC服务开发报错:string无String方法、类型不匹配问题求助

错误修复方案

1. 修复string类型调用String()方法报错

GetArticleName()、GetArticleReview()两个方法的返回值本身就是Go原生string类型,原生string没有String()方法,不需要额外调用该方法,直接传返回值即可。
原错误代码行:

rt, err := b.rating.GetRatings(xr.GetArticleName().String(), xr.GetArticleReview().String())

修复后代码:

rt, err := b.rating.GetRatings(xr.GetArticleName(), xr.GetArticleReview())

2. 修复返回值类型不匹配报错

RateResponse结构体的Rating字段是定义的Ratings枚举类型,而GetRatings方法返回的rt是string类型,二者类型不匹配,二选一修复即可:

  • 方案1:将string类型的rt转换为对应的枚举值赋值,示例如下(需要根据你实际定义的枚举值调整对应逻辑):
// 假设枚举定义为 type Ratings int32,包含ONE、TWO等枚举值
var ratingVal pb.Ratings
switch rt {
case "ONE":
    ratingVal = pb.Ratings_ONE
case "TWO":
    ratingVal = pb.Ratings_TWO
// 补全所有枚举值的对应映射
default:
    return nil, errors.New("不合法的评分值")
}
return &pb.RateResponse{Rating: ratingVal}, nil
  • 方案2:修改proto文件中RateResponse的rating字段类型为string,重新生成pb.go文件即可。

可选优化点

你当前使用的log.Printf格式化字符串没有占位符,实际打印内容会缺失信息,可调整为:

log.Printf("Received: Article Name: %s, Article Review: %s", xr.GetArticleName(), xr.GetArticleReview())

内容的提问来源于stack exchange,提问作者Saan Classes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:06:03