第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

具有命名參數(shù)和未命名參數(shù)的函數(shù)接口

具有命名參數(shù)和未命名參數(shù)的函數(shù)接口

Go
UYOU 2022-08-01 10:19:57
我正在學(xué)習(xí) Go 中的 protobuf 和 gRPC。在生成 pb.go 文件時protoc --go_out=plugins=grpc:chat chat.proto對于文件 chat.protosyntax = "proto3";package chat;message Message {  string body = 1;}service ChatService {  rpc SayHello(Message) returns (Message) {}}生成的 chat.pb.go 具有以下 2 個接口:type ChatServiceClient interface {    SayHello(ctx context.Context, in *Message, opts ...grpc.CallOption) (*Message, error)}...type ChatServiceServer interface {    SayHello(context.Context, *Message) (*Message, error)}我對在接口中使用命名參數(shù)感到困惑。是否有這些參數(shù)的用法:和 。在這種情況下,我們什么時候應(yīng)該命名與未命名參數(shù)?ChatServiceClientctxinopts
查看完整描述

1 回答

?
子衿沉夜

TA貢獻1828條經(jīng)驗 獲得超3個贊

參數(shù)名稱是可選的,對于接口,它可能純粹出于文檔目的而提供。


規(guī)格: 接口:


InterfaceType      = "interface" "{" { ( MethodSpec | InterfaceTypeName ) ";" } "}" .

MethodSpec         = MethodName Signature .

其中,方法 Signature 是:


Signature      = Parameters [ Result ] .

Result         = Parameters | Type .

Parameters     = "(" [ ParameterList [ "," ] ] ")" .

ParameterList  = ParameterDecl { "," ParameterDecl } .

ParameterDecl  = [ IdentifierList ] [ "..." ] Type .

如您所見,in 位于方括號中,這意味著它是可選的。IdentifierListParameterDecl


想想這樣一個例子:


type FileMover interface {

    MoveFile(dst, src string) error

}

它是“響亮而清晰的”。如果我們省略參數(shù)名稱怎么辦?


type FileMover interface {

    MoveFile(string, string) error

}

第一個參數(shù)是否標(biāo)識源或目標(biāo)并不明顯。提供和命名文件,它使塔爾清楚。dstsrc


當(dāng)您實現(xiàn)一個接口并提供方法的實現(xiàn)時,如果要引用參數(shù),則必須命名它們,因為您可以通過它們的名稱來引用它們,但是如果您不想引用參數(shù),即使這樣它們也可能被省略。


查看完整回答
反對 回復(fù) 2022-08-01
  • 1 回答
  • 0 關(guān)注
  • 82 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號