Flujo de control

if, con un arranque opcional

El if de Go se ve familiar — pero sin paréntesis alrededor de la condición, y las llaves son obligatorias incluso para una sola línea. El plus: if puede ejecutar primero una breve sentencia de inicialización, separada por un punto y coma:

    // price está en alcance aquí (y en el else)
}

Eso declara price, y luego lo evalúa. price vive solo dentro del if/else — una forma prolija de acotar un valor exactamente a donde se usa. Vas a ver esto constantemente con el patrón de err: if err := doThing(); err != nil { ... }.