Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将多个参数传递给golang net rpc调用_Go_Rpc - Fatal编程技术网

如何将多个参数传递给golang net rpc调用

如何将多个参数传递给golang net rpc调用,go,rpc,Go,Rpc,我正在go中使用网络库,我想进行RPC调用: Client.Call("action", []string{"arg1", "arg2"}, &response) 但在JSON中,我看到: {"method":"action","params":[["arg1","arg2"]],"id":0} 请注意,参数用双方括号括起来 在我的情况下,我需要参数是一个简单的列表: {"method":"action","params":["arg1","arg2"],"id":0} 有没有办法

我正在go中使用网络库,我想进行RPC调用:

Client.Call("action", []string{"arg1", "arg2"}, &response)
但在JSON中,我看到:

{"method":"action","params":[["arg1","arg2"]],"id":0}
请注意,参数用双方括号括起来

在我的情况下,我需要参数是一个简单的列表:

{"method":"action","params":["arg1","arg2"],"id":0}

有没有办法做到这一点?

Go的JSON RPC在
RPC上使用的编解码器。客户端将接收您发送的任何参数,并将其编码为用于参数的数组的第一个元素

因此,编码的请求总是有一个顶层数组,只有一个元素,其中包含您发送的参数,正如您已经指出的

请参见此处的
WriteRequest
功能:

为了实现您想要的,您可以实现一个定制的
rpc.ClientCodec

此处记录了接口:

您可以在此处借用默认JSON编解码器的几乎所有实现:

并将请求的
params
属性修改为:

Params interface{} `json:"params"`
然后,在基于标准参数编写
WriteRequest
时,只需将参数分配给请求参数:

c.req.Params[0] = param
然后,您可以使用
rpc.NewClientWithCodec
使用自定义编解码器创建客户端:


谢谢。我挖到了看到c.req.Params[0]=param行的地方,看到了它的8年历史。