func doSum(client simple.SimpleClient, num int) { log.Printf("Sum: %d", num) stream, err := client.Sum(context.Background()) if err != nil { log.Printf("Failed to Sum: %v", err) return } for i := 0; i < num; i++ { if err := stream.Send(&simple.Number{Num: int32(i)}); err != nil { log.Printf("Failed to sum: %v", err) return } } reply, err := stream.CloseAndRecv() if err != nil { log.Printf("Failed to sum: %v", err) return } log.Printf("Sum up to %d: %v", num, reply) }