code: func (k *KVS) Get(args *structs.KeyRequest, reply *structs.IndexedDirEntries) error {
  	if done, err := k.srv.forward("KVS.Get", args, args, reply); done {
  		return err
  	}
  
  	aclRule, err := k.srv.ResolveToken(args.Token)
  	if err != nil {
  		return err
  	}
  	return k.srv.blockingQuery(
  		&args.QueryOptions,
  		&reply.QueryMeta,
  		func(ws memdb.WatchSet, state *state.Store) error {
  			index, ent, err := state.KVSGet(ws, args.Key)
  			if err != nil {
  				return err
  			}
  			if aclRule != nil && !aclRule.KeyRead(args.Key) {
  				return acl.ErrPermissionDenied
  			}
  
  			if ent == nil {
  				// Must provide non-zero index to prevent blocking
  				// Index 1 is impossible anyways (due to Raft internals)
  				if index == 0 {
  					reply.Index = 1
  				} else {
  					reply.Index = index
  				}
  				reply.Entries = nil
  			} else {
  				reply.Index = ent.ModifyIndex
  				reply.Entries = structs.DirEntries{ent}
  			}
  			return nil
  		})
  }
docs: // Get is used to lookup a single key.