The Go Programming Language
The Go Programming Language
Go
es un lenguaje...
● moderno
● compacto y universal
Go
es un lenguaje...
● moderno
● compacto y universal
● imperativo, de tipado
estático y seguro
Go
es un lenguaje...
● moderno
● compacto y universal
● imperativo, de tipado
estático y seguro
Go
● sin basura
es un lenguaje...
● moderno
● compacto y universal
● imperativo, de tipado
estático y seguro
Go
● sin basura
● compilado nativamente
es un lenguaje...
● moderno
● compacto y universal
● imperativo, de tipado
estático y seguro
Go
● sin basura
● compilado nativamente
● ¡rápido y eficiente!
es un lenguaje...
Hola, Mundo!
package main
import "fmt"
func main() {
fmt.Println("Hello, 世界!")
}
Constantes const e = 2.7182818284590452353602874
const third = 1.0/3
precisas
Constantes const M64 int64 = 1<<20
const M = 1<<20
de tipado estático
Variables
var x int
var s, t string = "foo", "bar" // múltiple asignación
var x = 42 // int
var s, b = "foo", true // string, bool
sin inicializar
Variables x := 42
s, b := "foo", true
rápidas de declarar
Variables return &x
seguras
uint8 (byte), uint16, uint32, uint32, uint64,
Tipos
int8, int16, int32, int32 (rune), int64,
float32, float64,
complex64, complex128,
uint, int, uintptr,
bool, string,
error
predefinidos
Tipos array, struct, pointer, function,
slice, map, channel
compuestos
Tipos interface
abstractos
Tipos interface
abstractos
● pueden cambiar de
Slices
tamaño
● tienen longitud y
capacidad
● ¡muy usadas en Go!
Slices
len(s)
s[i]
s[i:j]
append(s, x) // append element x to slice s and return new slice
● tipo predefinido de
Map ●
tabla hash
claves de valor de tipo
K a valores de tipo V
make(map[K]V)
len(m)
Map
m[k]
delete(m, k)
Goroutines no necesariamente en
paralelo
● cuentan con su propio
stack
Goroutines go f()
go f(x, y, ...)
func f(msg string, delay time.Duration, ch chan string) {
for {
ch <- msg
time.Sleep(delay)
}
}
Channels
func main() {
ch := make(chan string)
go f("A--", 300*time.Millisecond, ch)
go f("-B-", 500*time.Millisecond, ch)
go f("--C", 1100*time.Millisecond, ch)
● Playground
play.golang.org/
BONUS ● Multiplataforma
build.golang.org/
● Tutorial
tour.golang.org/
● Documentación
godoc.org/
Preguntas, licencia y agradecimientos
Basado en la presentación de: Traducido y editado por:
Javier Provecho Fernández
Robert Griesemer
@javierprovecho
Esta obra está bajo una Licencia Creative Commons Attribution 3.0 Unported.
Disponible en: http://talks.golang.org/2014/taste.slide