我編寫了一個簡單的 JSONRPC 服務(wù)器來測試 Go 的功能,但我被卡住了,總是得到一個空結(jié)果,沒有錯誤和正確的 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)) }}無論我嘗試什么,我總是得到以下回應(yīng):{"id":1,"result":"","error":null}日志顯示一切都在服務(wù)器中正常工作。2013/07/17 15:17:13 Hello, Paulo 0xc200090ac0關(guān)于發(fā)生了什么的任何想法?我正在使用 Go 的最新穩(wěn)定版本 v1.1.1
1 回答

PIPIONE
TA貢獻1829條經(jīng)驗 獲得超9個贊
您的回復(fù)是指向字符串的指針類型。這是可以的,甚至是必需的,因為第二個參數(shù)用于返回答案。但是你這樣做:
s := "Hello, " + *i reply = &s
翻譯成:
構(gòu)造一個具有新值的新字符串。
讓回復(fù)指向這個新字符串
這讓返回的字符串完全不受影響。嘗試
*reply = s
- 1 回答
- 0 關(guān)注
- 221 瀏覽
添加回答
舉報
0/150
提交
取消