RPC调用,出参指针不能返回值

linfengc 2019-02-25 09:08:20
type Args struct {
A, B int
}

type ReplyMulti struct {
reply int
str string
}

type Arith int

func (t *Arith) Multiply(args *Args, pV *ReplyMulti) error {
pV.reply = args.A * args.B
pV.str = strconv.Itoa(pV.reply)
fmt.Println(pV.reply, pV.str)
return nil
}

调用到server端时,在接口内打印正确,
var ag Args
ag.A = 6
ag.B = 3
var ou ReplyMulti
arith.Multiply(&ag, &ou)
fmt.Println(ou.reply, ou.str)
直接在server端的main函数中调用打印也正确

args := Args{6, 4}

var reply ReplyMulti
err = client.Call("Arith.Multiply", args, &reply)
if err != nil {
log.Fatal("arith error:", err)
}
fmt.Printf("Arith: %d*%d=%d, %s\n", args.A, args.B, reply.reply, reply.str)
但是在client里面Call后的返回值是0, reply.str为空,
求解。。。。
...全文
218 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
qybao 2019-03-01
  • 打赏
  • 举报
回复
go的package里定义的变量,小写开头默认为私有private,大些才是公有public,方法名也一样
linfengc 2019-02-25
  • 打赏
  • 举报
回复
明白了,变量名首字母大写就可以了。

2,190

社区成员

发帖
与我相关
我的任务
社区描述
go语言学习与交流版
社区管理员
  • go语言社区
  • Freeman Z
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧