code: func (fTr *flagTracker) short(field reflect.StructField, flagName string) (letter string, err error) {
  	if short, ok := field.Tag.Lookup("short"); ok {
  		if short == "" {
  			return "", nil // explicitly set to no shorthand
  		}
  		runeVal, width := utf8.DecodeRuneInString(short)
  		if runeVal == utf8.RuneError || width > 1 {
  			return "", fmt.Errorf("'%s' is not a valid single ascii character.", short)
  		}
  		if _, ok := fTr.shorts[runeVal]; ok {
  			return "", fmt.Errorf("'%s' has already been used.", short)
  		}
  		fTr.shorts[runeVal] = struct{}{}
  		return short, nil
  	}
  	for _, chr := range flagName {
  		if _, ok := fTr.shorts[chr]; ok {
  			continue
  		}
  		// TODO if the lowercase version of first letter is taken, try upper case and vice versa
  		if unicode.IsLetter(chr) {
  			fTr.shorts[chr] = struct{}{}
  			return string(chr), nil
  		}
  	}
  	return "", nil // no shorthand char available, but that's ok
  }
docs: // short gets the shorthand for a flag. flagName is the non-prefixed name
  // returned by flagName.