package service import ( "net/rpc" ) func NewClient(address string) (HelloService, error) { conn, err := rpc.Dial("tcp", address) if err != nil { return nil, err } // buf := bytes.NewBuffer([]byte{}) // gob.NewEncoder(buf).Encode(HelloRequest{Name: "test"}) // // reader := bytes.NewReader([]byte("{}")) // resp := HelloRequest{Name: "test"} // gob.NewDecoder(reader).Decode(&resp) return &HelloServiceClient{conn: conn}, nil } // 要封装原始的 不友好的rpc call type HelloServiceClient struct { conn *rpc.Client } func (c *HelloServiceClient) Hello(request *HelloRequest, response *HelloResponse) error { if err := c.conn.Call("HelloService.Hello", request, response); err != nil { panic(err) } return nil }