// Compila y ejecuta el código de un archivo
go run hi.go
// Da documentación de la librería time
godoc time
// Formatea el código
go fmt hi.go
// Compila el código y genera un ejecutable
go build hi.go
// Ejecutando el archivo desde consola
$./hi
// Compila todos los archivos go de un proyecto
go run *.go
// Instalar paquete
go get gopkg.in/mgo.v2
// El &results inserta el resultado en la variable results.
var results []Movie
err := collection.find(nil).Sort("-_id").All(&results)
// foreach
for _, animal := range animals{
fmt.Println(animal)
}
for index, animal := range animals{
fmt.Println(animal)
}
// Definición y uso de estructura
type Gorra struct{
Status string
Message string
}
var mi_gorra = Gorra{
Status: "active",
Message: "World Cup"
}
// Función privada (inicia con minúscula)
func suma(num1 float32, num2 float32) float32 {
return num1 + num2
}
func suma(num1 float32, num2 float32) float32, float32, float32 {
// ej, de función closure
sum := func() float32{
return num1 + num2
}
return (sum), math.Ceil(sum), math.Floor(sum)
}
// Función pública inicia con mayúscula (debe ser documentada)
// Suma recibe dos números flotantes y devuelve un números flotante
func Suma(num1 float32, num2 float32) float32 {
return num1 + num2
}
// Cantidad indefinida de parámetros en una función
func (args ... string){
for _, arg:= range args{
fmt.Println(arg)
}
}
// Slice
movies := []string{
"La verdad duele",
"Ciudadano ejemplar",
"El club de la pelea"
}
// longitud de slice
len(movies)
movies[0:2]
// Obtenemos los argumentos desde consola (con la librería os)
os.Args
os.Args[0]
// Convierte str a int (librería Atoi)
arg, err = strconv.Atoi(os.Args[0])
// "Equivalencia" de estructuras de Go a POO
type Message struct{
Status string `json:"status"`
Message string `json:"message"`
}
func (this *Message) setStatus(data string){
this.Status = data
}
func (this *Message) setMessage(data string){
this.Message = data
}
message := new (Message)
message.setStatus("success")
message.setMessage("Hello world!")
// Dirección de puntero
example := "hello world"
fmt.Println(&example)