Go es un lenguaje propuesto por ingenieros de Google. TIene una sintaxis algo menos propensa a errores que la de C y otros lenguajes derivados de él (como C++ y Java), y a la vez, más compacta que la de otros lenguajes como Pascal, Modula-2 o Ada.
Su página oficial, en la que además se pueden teclear y probar problemas sencillos "online", es:
Desde allí se puede descargar también una versión instalable, que permitirá crear programas de mayor complejidad.
No soy ningún experto en Go, sólo alguien que está experimentando con este lenguaje. Aquí hay algunos ejemplos sencillos, para que quien ya haya programado en algún otro lenguaje puede comparar (si no has programado nunca, quizá todo sea demasiado poco detallado).
Después de cada ejemplo, incluiré alguna aclaración que ayude a entender las peculiaridades de ese ejemplo. En este primer acercamiento, los ejemplos serán programas simples y "no interactivos", que se puedan probar en la propia página de Go.
package main import "fmt" func main() { fmt.Println("Hola") }
Aclaraciones:
package main import "fmt" func main() { fmt.Println("Suma: ", 2+3) fmt.Println("Resta: ", 3-2) fmt.Println("Producto: ", 2*3) fmt.Println("Cociente: ", 7/2) fmt.Println("Resto: ", 7%2) }
package main import "fmt" func main() { if 2 > 1 { fmt.Println("2 es mayor que 1") } else if 1 > 2 { fmt.Println("1 es mayor que 2") } else { fmt.Println("2 es igual que 1") } }
package main import "fmt" func main() { for i:=1; i<=10; i++ { fmt.Println(i) } }
Se puede usar "i=1" para dar el valor inicial, con una sintaxis que recuerda más a la de C, pero en ese caso sí es necesario declarar la variable:
import "fmt" func main() { var i int for i=1; i<=10; i++ { fmt.Println(i) } }
Para declarar una variable, se usa la palabra "var", seguida del nombre de la variable y de su tipo ("int", en este caso, para indicar que es un número entero).
package main import "fmt" func suma(x, y int) int { return x + y } func main() { fmt.Println(suma(2, 3)) }
package main import "fmt" func main() { letra := 'a' switch letra { case 'a','e','i','o','u': fmt.Println("Es una vocal") case '0','1','2','3','4','5','6','7','8','9': fmt.Println("Es una cifra") default: fmt.Println("Es otro símbolo") } }
package main import "fmt" func main() { var letra byte letra = 'c' switch { case letra=='a' || letra=='e' || letra=='i' || letra=='o' || letra=='u': fmt.Println("Es una vocal") case letra >='b' && letra <= 'z': fmt.Println("Es una consonante") case letra >='0' && letra <= '9': fmt.Println("Es una cifra") default: fmt.Println("Es otro símbolo") } }
package main import ( "fmt" "math" ) func main() { radio := 3.5; circunferencia := 2 * math.Pi * radio; fmt.Println("Circunferencia = ", circunferencia) circulo := math.Pi * radio * radio; fmt.Println("Circulo = ", circulo) }
package main import "fmt" func intercambiar(x, y int) (int, int) { return y, x } func main() { var a, b int = 4, 6 c, d := intercambiar(a, b) fmt.Println(c, d) }
package main import "fmt" type Punto struct { X int Y int Z int } func main() { v := Punto{1, 2, -4} v.Y = 3 fmt.Println("X vale ", v.X) fmt.Println("Y todo el punto es ",v) }
El resultado sería
X vale 1
Y todo el punto es {1 3 -4}
package main import "fmt" func main() { pares := []int {2, 4, 6, 8, 10} // Mostramos los datos uno por uno for i := 0; i < len(pares); i++ { fmt.Printf("posicion %d, valor %d\n", i, pares[i]) } // Mostramos todo el array fmt.Println("Pares:", pares) // De la posicion 1 a la 3 fmt.Println("pares[1:4] ==", pares[1:4]) // Desde el principio a la 3 fmt.Println("pares[:3] ==", pares[:3]) // Desde la 2 hasta el final fmt.Println("pares[2:] ==", pares[2:]) }
Su resultado sería
posicion 0, valor 2
posicion 1, valor 4
posicion 2, valor 6
posicion 3, valor 8
posicion 4, valor 10
Pares: [2 4 6 8 10]
pares[1:4] == [4 6 8]
pares[:3] == [2 4 6]
pares[2:] == [6 8 10]
¿Hay más? Claro. Por ejemplo: "mapas", ficheros, interacción con el usuario, servicios de red... ¿Cuando? Pronto...
Apartado actualizado : 03-08-2012 - 1142 visitas desde el 01-Ago-2012 - www.nachocabanes.com