我编写了一个简单的 JSONRPC 服务器来测试 Go 的功能,但我被卡住了,总是得到一个空结果,没有错误和正确的 id。我有以下 Go 代码:package mainimport ( "log" "net" "net/rpc" "net/rpc/jsonrpc")type Experiment intfunc (e *Experiment) Test(i *string, reply *string) error { s := "Hello, " + *i reply = &s log.Println(s, reply) return nil}func main() { exp := new(Experiment) server := rpc.NewServer() server.Register(exp) l, err := net.Listen("tcp", ":1234") if err != nil { log.Fatal("listen error:", err) } for { conn, err := l.Accept() if err != nil { log.Fatal(err) } server.ServeCodec(jsonrpc.NewServerCodec(conn)) }}无论我尝试什么,我总是得到以下回应:{"id":1,"result":"","error":null}日志显示一切都在服务器中正常工作。2013/07/17 15:17:13 Hello, Paulo 0xc200090ac0关于发生了什么的任何想法?我正在使用 Go 的最新稳定版本 v1.1.1
1 回答
PIPIONE
TA贡献1829条经验 获得超9个赞
您的回复是指向字符串的指针类型。这是可以的,甚至是必需的,因为第二个参数用于返回答案。但是你这样做:
s := "Hello, " + *i reply = &s
翻译成:
构造一个具有新值的新字符串。
让回复指向这个新字符串
这让返回的字符串完全不受影响。尝试
*reply = s
- 1 回答
- 0 关注
- 206 浏览
添加回答
举报
0/150
提交
取消