簡體   English   中英

GO GRPC function 存根定義問題

[英]GO GRPC function stub definition issue

我正在研究 gRPC 和 Golang,並且對兩者都很陌生。 教程中有這個 function:

func (s *routeGuideServer) GetFeature(ctx context.Context, point *pb.Point) (*pb.Feature, error) {
    ...
}

我不明白這個 function 存根中的“(s *routeGuideServer)”部分在做什么。

據我所知,我已經學習了 go 函數和“(ctx context.Context,point *pb.Point)”是輸入,“(*pb.Feature,error)”是output。

這個“(s *routeGuideServer)”部分到底是什么? 任何指向解釋的指針將不勝感激。

它是 function 接收器。

https://go.dev/tour/methods/4

它有點像 OOP 語言中的 class,其中類型 (*routeGuideServer) 具有 function (或方法)。

所以在這種情況下,*routeGuideServer 有一個 GetFeature function。 您需要一個 *routeGuideServer 類型的值來調用 function。

在 GRPC 中,當您制作 protofile 時,您聲明的服務將成為服務器的接口。

您需要遵守此接口,這意味着您需要一個具有這些方法的結構。

因此,啟動服務器的 function 接受服務器的接口,這需要您在服務下定義的所有 rpc 調用。 因此,為了遵守這一點,所有方法都需要一個結構。

如果結構和方法不是語言的一部分,則 function 將需要單獨接收每個 function。

一個很大的好處是,當您初始化結構時,它可以包含字段,例如數據庫連接,作為回報,這些字段在每個方法中都可用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM