code: func (store *store) Get(ref reference.Named) (digest.Digest, error) {
  	if canonical, ok := ref.(reference.Canonical); ok {
  		// If reference contains both tag and digest, only
  		// lookup by digest as it takes precedence over
  		// tag, until tag/digest combos are stored.
  		if _, ok := ref.(reference.Tagged); ok {
  			var err error
  			ref, err = reference.WithDigest(reference.TrimNamed(canonical), canonical.Digest())
  			if err != nil {
  				return "", err
  			}
  		}
  	} else {
  		ref = reference.TagNameOnly(ref)
  	}
  
  	refName := reference.FamiliarName(ref)
  	refStr := reference.FamiliarString(ref)
  
  	store.mu.RLock()
  	defer store.mu.RUnlock()
  
  	repository, exists := store.Repositories[refName]
  	if !exists || repository == nil {
  		return "", ErrDoesNotExist
  	}
  
  	id, exists := repository[refStr]
  	if !exists {
  		return "", ErrDoesNotExist
  	}
  
  	return id, nil
  }
docs: // Get retrieves an item from the store by reference