Notas sobre Go (GoLang) para Programadores

En Go Golang, se puede definir un alias para un tipo de dato mediante

type Celsius float64

type Nombre string

y posteriormente declarar una variable de esa forma, en lugar de

var temperatura float64, que sea var temperatura Celsius

Las inicializaciones se pueden hacer explicitas de tipo o implícitas en las declaraciones

var x int = 100 es lo mismo que var x = 100

Si no se inicializan en la declaración, estas quedan con valor 0 ó “”

Dentro de una función se puede hacer una declaración e inicialización implícita mediante :=

x := 100   declara x del tipo de dato al cual iguala inicializando la variable.

Los punteros son igual que en ‘C’

Alternativamente se puede declarar una variable como un pointer con la función new() quedando en cero hasta ser inicializada

ptr := new(int)

*ptr = 3

Scope de variables es solo dentro del para de {} donde está definida

A nivel estructura de programa el scope es: Universal, Package (puede tener varios files), File

Conversiones

FormatFloat(f, fmt, prec, bitSize) – floating point to string

ParseFloat(s, bitSize) – Srting to float

LOOPS

for i:=0; i<10; i++

Equivalente a un while

i=0

for i<10{
i++
}

Loop infinito

for{
}

Switch/Case – (hace el break automático)

Switch x{
case 1:
fmt.Print(“1”)
case 2:
fmt.Print(“2”)
default:
fmt.Printf(“default”)
}

Input

num, err := fmt.Scan(&Data)
fmt.Printf(data)

ARRAYS

var x[5] int    Declaración de array de 5 integers. Quedan inicializados en cero.

x := […] int {1, 2, 3, 4}  Declaración con inicialización donde … toma el valor de 4 que es el tamaño del literal.

for i, v range x{
fmt.Printf(i, v)
}

Va a imprimir los índices junto con los valores del array – range devuelve DOS valores.

Slices se acceden igual que en Python con [:]

sli := [] int {1, 2, 3}     A esto le faltan los … dentro de los [] para ser una inicialización de array. Se entiende entonces como una inicialización de un slice y se crea el undelying array con mismo length y capacity.

sli = make([] int, 10)  Forma alternativa de crear un slice de iguales caracteristicas que el underlying  array

sli = make([] int, 10, 15) Tercer parámetro es capacity. El underlying array es mayor. sli puede crecer

Un slice puede crecer con append hasta por encima del capacity (tamaño del undelying array) con un costo de tiempo ya que hace un aaray nuevo por cada append y copia los datos. Esto NO es una lista.

MAPS – implementación de hash tables (En otros lenguajes Diccionary)

var idMap map[string] int              map[KEY] value   declaration
idMap = make(map[string]int)      Allocation

idMap := map[string]int {             Inicialización con literal
“joe” : 123
}

idMap[“Jane”] = 456     Jane no existe y lo agrega con el valor 456, si existe, lo cambia

STRUCTS

type struct Person{
name string
addr string
}

var p Person

También con new

p := new(Person)   inicializando todo en cero o “”

Literal

p = Person(name: “Joe”, addr: “this street”)

Declaración de funciones – func <name> (arg vartype) return type{    ejemplo:

func foo (x int) int{

}

Leave a Reply

Your email address will not be published. Required fields are marked *