title: Repeated field with 0 elements results in nil on client side
body: <p>Question:</p>
  
  <p>I wonder why do I get <strong>nil</strong> value on gRPC client when server responds with
  empty slice on <code>repeated</code> field?</p>
  
  <p>Is there any reference/documentation explicitly describing this behavior?</p>
  
  <hr>
  
  <p>Consider the following example:</p>
  
  <p>Simple proto file definitions:</p>
  
  <pre><code>syntax = "proto3";
  
  option go_package = "testdata";
  
  service Greeter {
      rpc Hello (HelloRequest) returns (HelloResponse) {}
  }
  
  message HelloRequest {
      string name = 1;
  }
  
  message HelloResponse {
      repeated string greetings = 1;
  }
  </code></pre>
  
  <p>Greeter service implementation:</p>
  
  <pre><code>type Hello struct{}
  
  func (*Hello) Hello(ctx context.Context, req *pb.HelloRequest) (*pb.HelloResponse, error) {
      return &amp;pb.HelloResponse{
          Greetings: []string{}, // Note: a slice with 0 elements (not nil slice)
      }, nil
  }
  </code></pre>
  
  <p>Server implementation:</p>
  
  <pre><code>srv := grpc.NewServer()
  pb.RegisterGreeterServer(srv, &amp;Hello{})
  
  lis, err := net.Listen("tcp", ":8123")
  if err != nil {
      panic(err)
  }
  
  if err := srv.Serve(lis); err != nil {
      panic(err)
  }
  </code></pre>
  
  <p>Client code:</p>
  
  <pre><code>    cc, err := grpc.Dial(":8123", grpc.WithBlock(), grpc.WithInsecure())
  if err != nil {
      panic(err)
  }
  
  client := testdata.NewGreeterClient(cc)
  resp, err := client.Hello(context.TODO(), &amp;testdata.HelloRequest{})
  if err != nil {
      panic(err)
  }
  
  fmt.Printf("%#v", resp.GetGreetings())
  </code></pre>
  
  <p>Result output:</p>
  
  <pre><code>[]string(nil)
  </code></pre>