英文:
Arguments of go rpc. When should they be pointer?
问题
我已经阅读了go rpc的文档,并发现其中的一个标准:方法的第二个参数是一个指针。
下面的方法展示了正确使用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上下文中,我不太确定它的作用。
英文:
I have read go rpc documentation, and find out one of the 4 criteria:
> the method's second argument is a pointer.
The method below shows the right way to use go rpc, thus the second parameter is a pointer *T2
.
func (t *T) MethodName(argType T1, replyType *T2) error
Is there any reason for this criteria? Why should it be a pointer?
After I read more examples, find that for most of time, even the first argument is a pointer!
func (t *Arith) Multiply(args *Args, reply *int) error {
*reply = args.A * args.B
return nil
}
I know the difference between pointer type and common type, but I'm not sure about it in rpc context.
答案1
得分: 2
回复必须是一个指针,这样函数才能给它赋值。
这类似于这个例子:https://gobyexample.com/pointers
英文:
Reply must be a pointer so the function can assign a value to it.
It is similar to the example here: https://gobyexample.com/pointers
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论