title: etcd3 Go Client - How to paginate large sets of keys?
body: <p>It seems that pagination through a large set of keys involve using WithFromKey() and WithLimit() options to Get(). For example if I want to fetch 2 pages of 10 items I would do something like:</p>
  
  <pre><code>opts := []clientv3.OpOption {
      clientv3.WithPrefix(),
      clientv3.WithSort(clientv3.SortByKey, clientv3.SortAscend),
      clientv3.WithLimit(10),
  }
  
  gr, err := kv.Get(ctx, "key", opts...)
  if err != nil {
      log.Fatal(err)
  }
  
  fmt.Println("--- First page ---")
  for _, item := range gr.Kvs {
      fmt.Println(string(item.Key), string(item.Key))
  }
  
  lastKey := string(gr.Kvs[len(gr.Kvs)-1].Value)
  
  fmt.Println("--- Second page ---")
  opts = append(opts, clientv3.WithFromKey())
  gr, _ = kv.Get(ctx, lastKey, opts...)
  
  // Skipping the first item, which the last item from from the previous Get
  for _, item := range gr.Kvs[1:] {
      fmt.Println(string(item.Key), string(item.Value))
  }
  </code></pre>
  
  <p>The problem is that the last key is fetched agains as the first item of the second page, which I need to skip and only 9 new items.</p>
  
  <p>Is that the proper way to paginate or am I missing something? </p>