code: func tagByName(client *tags.RestClient, name, categoryID string) (string, error) {
  	ctx, cancel := context.WithTimeout(context.Background(), defaultAPITimeout)
  	defer cancel()
  	tags, err := client.GetTagByNameForCategory(ctx, name, categoryID)
  	if err != nil {
  		return "", fmt.Errorf("could not get tag for name %q: %s", name, err)
  	}
  
  	if len(tags) < 1 {
  		return "", fmt.Errorf("tag name %q not found in category ID %q", name, categoryID)
  	}
  	if len(tags) > 1 {
  		// This situation is very similar to the one in tagCategoryByName. The API
  		// docs even say that tags need to be unique in categories, yet
  		// GetTagByNameForCategory still returns multiple results.
  		return "", fmt.Errorf(vSphereTagSearchErrMultiple, name)
  	}
  
  	return tags[0].ID, nil
  }
docs: // tagByName locates a tag by it supplied name and category ID. Use
  // tagCategoryByName to get the tag category ID if require the category ID as
  // well.