错误函数()。字符串未定义(类型字符串没有字段或方法字符串)

Posted

技术标签:

【中文标题】错误函数()。字符串未定义(类型字符串没有字段或方法字符串)【英文标题】:Error function().String undefined (type string has no field or method String) 【发布时间】:2021-11-26 22:28:17 【问题描述】:

我尝试在 Go 中运行基于 gRPC 服务的代码,但一直未能完成调试。在这里,我在下面添加我的部分代码。请随时发布任何代码建议或 cmets。

    func (b *BookInfo) GetRate(ctx context.Context, xr *pb.RateRequest) (*pb.RateResponse, error) 
    // b.log.Info("Handle request for GetRate", "Article Name", xr.GetArticleName(), "Article Review", xr.GetArticleReview())
    log.Printf("Received: ", "Article Name", xr.GetArticleName(), "Article Review", xr.GetArticleReview())

    rt, err := b.rating.GetRatings(xr.GetArticleName().String(), xr.GetArticleReview().String())
    if err != nil 
        return nil, err
    

    return &pb.RateResponseRating: rt, nil


保存在 bookInfo_server

func (x *RateRequest) GetArticleName() string 
    if x != nil 
        return x.ArticleName
    
    return ""


func (x *RateRequest) GetArticleReview() string 
    if x != nil 
        return x.ArticleReview
    
    return ""

最后一部分

type RateResponse struct 
    state         protoimpl.MessageState
    sizeCache     protoimpl.SizeCache
    unknownFields protoimpl.UnknownFields

    Rating Ratings `protobuf:"varint,1,opt,name=rating,proto3,enum=Ratings" json:"rating,omitempty"`

保存在 bookInfo.pb.go 文件中

错误:

bookInfo_server/bookInfo_server.go:28:52: xr.GetArticleName().String undefined (type string has no field or method String)
bookInfo_server/bookInfo_server.go:28:84: xr.GetArticleReview().String undefined (type string has no field or method String)
bookInfo_server/bookInfo_server.go:33:26: cannot use rt (type string) as type bookInfo.Ratings in field value

【问题讨论】:

使用xr.GetArticleName(),而不是xr.GetArticleName().String()。最后一个错误取决于Ratings的类型定义 是的,上面的答案是对的 【参考方案1】:

类型字符串在第一个和第二个错误中没有xr.GetArticleName().string 的方法或字段,

您可以在代码中使用 xr.GetArticleName() 代替它

最后一个错误是Ratings的类型定义。

【讨论】:

以上是关于错误函数()。字符串未定义(类型字符串没有字段或方法字符串)的主要内容,如果未能解决你的问题,请参考以下文章

Next Js 错误:元素类型无效:预期为字符串(对于内置组件)或类/函数(对于复合组件)但得到:未定义

为啥在 TypeScript 中的“任何”字段类型变量上使用“字符串”函数时没有编译时错误?

d3js - 类型错误:字符串未定义

错误:[vuex] 期望字符串作为类型,但发现未定义

未捕获的类型错误:无法读取未定义的属性“toUpperCase”

元素类型无效:需要一个字符串(对于内置组件)或一个类/函数(对于复合组件)但得到:未定义的 React