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
|
||
|
}
|