code: func Unquote(s string) (t string, err error) {
  	n := len(s)
  	if n < 2 {
  		return "", errors.Trace(ErrSyntax)
  	}
  	quote := s[0]
  	if quote != s[n-1] {
  		return "", errors.Trace(ErrSyntax)
  	}
  	s = s[1 : n-1]
  	if quote != '"' && quote != '\'' {
  		return "", errors.Trace(ErrSyntax)
  	}
  	// Avoid allocation. No need to convert if there is no '\'
  	if strings.IndexByte(s, '\\') == -1 && strings.IndexByte(s, quote) == -1 {
  		return s, nil
  	}
  	buf := make([]byte, 0, 3*len(s)/2) // Try to avoid more allocations.
  	for len(s) > 0 {
  		mb, ss, err := UnquoteChar(s, quote)
  		if err != nil {
  			return "", errors.Trace(err)
  		}
  		s = ss
  		buf = append(buf, mb...)
  	}
  	return string(buf), nil
  }
docs: // Unquote interprets s as a single-quoted, double-quoted,
  // or backquoted Go string literal, returning the string value
  // that s quotes. For example: test=`"\"\n"` (hex: 22 5c 22 5c 6e 22)
  // should be converted to `"\n` (hex: 22 0a).