grpcexercises/calculator/server/Average.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
}