go rpc 的参数。他们啥时候应该是指针?

Posted

技术标签:

【中文标题】go rpc 的参数。他们啥时候应该是指针?【英文标题】:Arguments of go rpc. When should they be pointer?go rpc 的参数。他们什么时候应该是指针? 【发布时间】:2021-11-29 02:01:36 【问题描述】:

我已阅读 go rpc documentation,并找出 4 个条件之一:

方法的第二个参数是一个指针

下面的方法展示了使用go rpc的正确方法,因此第二个参数是一个指针*T2

func (t *T) MethodName(argType T1, replyType *T2) error

????????????但是,这个标准有什么理由吗?为什么应该是指针?

阅读更多示例后,发现在大多数情况下,连第一个参数都是指针

func (t *Arith) Multiply(args *Args, reply *int) error 
    *reply = args.A * args.B
    return nil

我知道指针类型和普通类型的区别,但是在rpc上下文中我不确定。 ????????????

【问题讨论】:

【参考方案1】:

Reply 必须是一个指针,以便函数可以为其赋值。

和这里的例子类似:https://gobyexample.com/pointers

【讨论】:

非常感谢!?我知道指针类型和普通类型之间的区别,但我不确定在rpc上下文中。

以上是关于go rpc 的参数。他们啥时候应该是指针?的主要内容,如果未能解决你的问题,请参考以下文章

c语言中,函数的形参啥时候必须是指针

GAE Go Json-RPC 调用示例

我们啥时候应该为组件实现带有 IContainer 参数的构造函数?

我们啥时候应该使用 save() 的高级参数?

Go语言面向函数和接口编程

C# 获取POST方式提交的参数,Request.Form["参数名"] 获取不到,可能是啥问题