47 lines
747 B
Go
47 lines
747 B
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"git.gqnotes.com/guoqiang/grpcexercises/calculator/pb"
|
||
|
"io"
|
||
|
"log"
|
||
|
)
|
||
|
|
||
|
// Sum 计算和-客户端流式
|
||
|
func Sum(client pb.CalculateServiceClient) {
|
||
|
// 构造一个切片
|
||
|
nums := []int64{1, 2, 3, 4, 5}
|
||
|
|
||
|
stream, err := client.Sum(context.Background())
|
||
|
|
||
|
if err != nil {
|
||
|
log.Fatalf("failed to call: %v", err)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// 发送数据
|
||
|
for i := 0; i < len(nums); i++ {
|
||
|
err = stream.Send(&pb.SumRequest{
|
||
|
Num: nums[i],
|
||
|
})
|
||
|
|
||
|
if err == io.EOF {
|
||
|
break
|
||
|
}
|
||
|
|
||
|
if err != nil {
|
||
|
log.Fatalf("failed to send: %v", err)
|
||
|
return
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// 接收数据
|
||
|
resp, err := stream.CloseAndRecv()
|
||
|
|
||
|
if err != nil {
|
||
|
log.Fatalf("failed to recv: %v", err)
|
||
|
}
|
||
|
|
||
|
log.Printf("nums:%+v\tresp:%+v\n", nums, resp)
|
||
|
}
|