go语言简单模拟RPC,详见个人新博客:
代码如下:
package mainimport ( "errors" "fmt" "time")func RPCClient(ch chan string, req string) (string, error) { ch <- req select { case ack := <-ch: return ack, nil case <-time.After(time.Second): return "", errors.New("Time out") }}func RPCServer(ch chan string) { for { data := <-ch fmt.Println("server received:", data) //time.Sleep(time.Second * 2) ch <- "roger" }}func main() { ch := make(chan string) go RPCServer(ch) recv, err := RPCClient(ch, "hi") if err != nil { fmt.Println(err) } else { fmt.Println("client received", recv) }}