2009-11-12 25 views
5

Aquí es un programa de prueba Go:¿Por qué necesito un punto y coma aquí?

package main 
import fmt "fmt" 
func main() { 
    ex := "moo cow\n"; 
    fmt.Print (ex) 
} 

Con el punto y coma, que compila. Sin embargo, si se elimina el punto y coma, no es así:

 
string.go:5: syntax error near fmt 

¿Alguna idea?


Update (marzo de 2012): Ir más recientes comunicados son capaces de recopilar las dos formas (con y sin el punto y coma).

Respuesta

10

De The Go Programming Language Specification:

elementos de una lista de declaraciones se separados por punto y coma, que puede ser solamente omitirse si el declaración anterior:

  • termina con el paréntesis de cierre ")" de una lista de declaraciones; o
  • termina con un corchete de cierre "}" que no es parte de una expresión.
+7

... bastante feo? – ZJR

+1

este "problema" probablemente desapareció. Pruébelo en http://golang.org/doc/play/ –

+0

Sí, parece ser un problema de cómo analiza el texto. Probablemente terminaría poniendo todos los puntos y comas de todos modos. A menos que no esté permitido. No lo he usado lo suficiente como para saberlo. – steviesama

1

Bueno, la respuesta está técnicamente aquí: http://golang.org/doc/effective_go.html#semicolons, pero no está muy claro. Parece que puede dejar el punto y coma al final de las instrucciones, pero no las expresiones. Creo (no estoy seguro de aquí) que las expresiones son cualquier cosa con un signo "=" (o ": =") en ellos (aunque + = parece estar bien en el tutorial?)

+0

Después de leer eso, parece que los usa para separar enunciados en bloques, como lo hace en Pascal. Fuera de bloques, no los necesitas. – Nosredna

Cuestiones relacionadas