INNER JOIN - только совпадающие строки; LEFT JOIN - все из левой + совпадения справа (NULL при отсутствии); RIGHT JOIN, FULL OUTER JOIN, CROSS JOIN. В Go пишут сырой SQL или через builder (squirrel, goqu). Параметры через плейсхолдеры $1, $2 (Postgres) или ? (MySQL), передают в db.QueryContext, db.ExecContext.
rows, err := db.QueryContext(ctx,
"SELECT u.name, o.amount FROM users u LEFT JOIN orders o ON u.id = o.user_id WHERE u.id = $1", id)