code: func GenMyMySQL(u *URL) (string, error) {
  	host, port, dbname := hostname(u.Host), hostport(u.Host), strings.TrimPrefix(u.Path, "/")
  
  	// resolve path
  	if u.Proto == "unix" {
  		if host == "" {
  			dbname = "/" + dbname
  		}
  		host, dbname = resolveSocket(stdpath.Join(host, dbname))
  		port = ""
  	}
  
  	// save host, port, dbname
  	if u.hostPortDB == nil {
  		u.hostPortDB = []string{host, port, dbname}
  	}
  
  	// if host or proto is not empty
  	if u.Proto != "unix" {
  		if host == "" {
  			host = "127.0.0.1"
  		}
  		if port == "" {
  			port = "3306"
  		}
  	}
  	if port != "" {
  		port = ":" + port
  	}
  
  	dsn := u.Proto + ":" + host + port
  
  	// add opts
  	dsn += genOptions(
  		convertOptions(u.Query(), "true", ""),
  		",", "=", ",", " ", false,
  	)
  
  	// add dbname
  	dsn += "*" + dbname
  
  	// add user/pass
  	if u.User != nil {
  		pass, _ := u.User.Password()
  		dsn += "/" + u.User.Username() + "/" + pass
  	} else if strings.HasSuffix(dsn, "*") {
  		dsn += "//"
  	}
  
  	return dsn, nil
  }
docs: // GenMyMySQL generates a MyMySQL MySQL DSN from the passed URL.