go rpc的参数。什么时候应该使用指针?

huangapple go评论78阅读模式
英文:

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

huangapple
  • 本文由 发表于 2021年10月9日 21:39:49
  • 转载请务必保留本文链接:https://go.coder-hub.com/69507233.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定