35 lines
510 B
Go
35 lines
510 B
Go
package main
|
|
|
|
import (
|
|
"git.gqnotes.com/guoqiang/grpcexercises/calculator/pb"
|
|
"io"
|
|
)
|
|
|
|
// Average 计算平均数-双向流式
|
|
func (s *Server) Average(stream pb.CalculateService_AverageServer) (err error) {
|
|
var sum int64
|
|
var count int64
|
|
|
|
for {
|
|
req, err := stream.Recv()
|
|
|
|
if err == io.EOF {
|
|
break
|
|
}
|
|
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
sum += req.Num
|
|
|
|
count++
|
|
|
|
if err := stream.Send(&pb.AverageResponse{Average: float32(sum) / float32(count)}); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
return
|
|
}
|