0% encontró este documento útil (0 votos)
103 vistas

The Go Programming Language

El documento describe las características principales del lenguaje de programación Go. Go es un lenguaje moderno, compacto y universal diseñado por y para programadores. Es imperativo, de tipado estático y seguro, sin basura y compilado nativamente para ser rápido y eficiente. Incluye tipos, constantes, variables, slices, maps y funciones predefinidos, así como concurrencia mediante goroutines y canales.

Cargado por

Diego Villegas
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
103 vistas

The Go Programming Language

El documento describe las características principales del lenguaje de programación Go. Go es un lenguaje moderno, compacto y universal diseñado por y para programadores. Es imperativo, de tipado estático y seguro, sin basura y compilado nativamente para ser rápido y eficiente. Incluye tipos, constantes, variables, slices, maps y funciones predefinidos, así como concurrencia mediante goroutines y canales.

Cargado por

Diego Villegas
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 35

The Go Programming Language

Diseñado por programadores,


para programadores.
● moderno

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

sin especificar tipos


Variables var x int
var s, t string

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)

for key, value := range m {


// order of key sequence different each time
}
Syntax doesn’t matter
unless you are a
programmer.
-- Rob Pike
Conclusión
Compactness of syntax
doesn’t matter unless you
are reading programs.
Ser compacto no implica ser ilegible, la claridad es
crucial.
Funciones func Sin(x float64) float64
func AddScale(x, y int, f float64) int
Funciones func Write(data []byte) (written int, err error)

con retorno múltiple


Funciones func Printf(format string, args ...interface{})

con lista de argumentos


variable en longitud y
tipos
Concurrencia
● se ejecutan
concurrentemente, pero

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)

for i := 0; i < 100; i++ {


fmt.Println(i, <-ch)
}
}
¡Aún hay más!
● Librerías estándar
golang.org/pkg/

● 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

Escuela Técnica Superior de Ingeniería Informática Grupo Universitario de Informática


de Valladolid de Valladolid

También podría gustarte