Go – Notas básicas

// 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)

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *