PDF de programación - Curso de Go

Imágen de pdf Curso de Go

Curso de Gográfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 27 de Febrero del 2018)
1.899 visualizaciones desde el 27 de Febrero del 2018
364,3 KB
96 paginas
Creado hace 14a (22/03/2010)
Curso de Go

Roberto Costumero Moreno
ACM Cap´ıtulo de Estudiantes
Facultad de Inform´atica, UPM

Abril 2010

Curso de Go

El logotipo de Go y la informaci´on correspondiente al presente manual ha sido obtenida,

recopilada y modificada adecuadamente de la p´agina oficial de Go, http://golang.org.

El logotipo de Go y la informaci´on referente al lenguaje est´an licenciadas por GoogleTM
bajo una Licencia Reconocimiento 3.0 de Creative Commons y puede consultarse en la si-
guiente direcci´on: http://creativecommons.org/licenses/by/3.0/es/. El uso del logotipo y de la
informaci´on est´an autorizados por la presente licencia mencionando su correcta atribuci´on.

2010 ACM Cap´ıtulo de Estudiantes - Facultad de Inform´atica UPM

ACM Cap´ıtulo de Estudiantes
Facultad de Inform´atica - Universidad Polit´ecnica de Madrid
Campus de Montegancedo s/n
28660 Boadilla del Monte
MADRID (ESPA ˜NA)

Esta obra puede ser distribuida ´unicamente bajo los t´erminos y condiciones expuestos en la
Licencia Reconocimiento-No Comercial-Compartir bajo la misma licencia 3.0 Espa˜na de
Creative Commons o superior (puede consultarla en http://creativecommons.org/licenses/by-
nc-sa/3.0/es/).

ACM Cap´ıtulo de Estudiantes - Facultad de Inform´atica UPM no se responsabiliza de las

opiniones aqu´ı vertidas por el autor.

Gracias a todos mis amigos y compa˜neros de ACM
por todo el apoyo y la ayuda que han prestado
para que este manual pudiera ser publicado.

´Indice general

1. Introducci´on

.

.

.

.

.

.

.

.

. .

. .
.
.

1.1. ¿Qu´e es Go? .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. .
1.2. ¿Qui´en lo desarrolla? .
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3. ¿Por qu´e crear un nuevo lenguaje? . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.4. Recursos .
.
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.4.1. golang.org .
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.4.2. #go-nuts
.
. . . . . . . . . . . . . . . . . . . . . . . . .
1.4.3. Lista de correo Go Nuts
1.4.4. Gestor de errores .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.4.5. http://go-lang.cat-v.org/ . . . . . . . . . . . . . . . . . . . . . . . . . .
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
. .
. .
.
.
.
.
. .
1.8. Manteni´endose al d´ıa .

1.5. ¿C´omo instalarlo? .
. .
1.6. Compilando . .
. .
1.6.1. gccgo .
1.6.2. 6g/8g .
. .
1.7. Otras herramientas
.
.
. .

1.7.1. Godoc .
1.7.2. Gofmt .

2. Caracter´ısticas y tipos b´asicos

.

.

.

.
.

. .

. .

.
.
.
.

. .
.
.

2.1. Nuestro primer programa: Hello World!
2.2. Garbage Collector .
.
2.3. Las bases del lenguaje
.
2.4. Comentarios . .
2.5. Literales .
.
.
2.6. Vistazo r´apido de la sintaxis
2.7. Tipos

. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. .
. .
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. .
. .
2.8.1. Diferencias con C . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.8.2. Ejemplos .
2.9. Conversiones
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.10. Valores constantes y n´umeros ideales . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.11. Declaraciones . .

. .
2.7.1. N´umeros
2.7.2. Bool .
.
2.7.3. String .
. .

2.8. Operadores

. .
.

. .

.

.

.

.

.

.

.

8
8
9
9
9
9
10
10
10
10
10
12
12
12
13
14
14
14

16
16
16
16
17
17
18
19
19
20
20
21
21
21
22
22
23

4

Curso de Go

.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.11.1. Variables
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.11.2. Constantes
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.11.3. Tipos . .
2.11.4. Operador new vs. funci´on make . . . . . . . . . . . . . . . . . . . . .
2.11.5. Asignaciones . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .

.
.
. .

.
.
.
.
. .

.

3. Estructuras de control

.

. .

. .

3.1. Sentencia condicional: if
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2. Sentencia condicional: switch . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3. Bucles: for .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Instrucciones break y continue . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4.
.
3.5. Funciones .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. .
3.6. ¿Y qu´e hay del 0? .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.7. Defer
.
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.8. Funciones an´onimas, λ-programaci´on y closures . . . . . . . . . . . . . . . . .

.
.
. .
.
.

. .

.

.

.

.

.

.

.

.

.

4. Estructuraci´on de programas

.

´Ambito de una variable .
Inicializaci´on .
.
.
.
.
.
. .
.
.

4.1. Paquetes y estructura de los ficheros fuente
4.2.
4.3.
.
4.4. Testing .
4.5. Librer´ıas .

. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
. .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.5.1. Fmt
4.5.2. Os .
.
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.5.3. Os - Entrada/salida en ficheros . . . . . . . . . . . . . . . . . . . . . .
4.5.4. Otras librer´ıas .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
. .
.
.

.
.
.
.

.

.

5. Tipos de datos compuestos
.
.
.

.
.
.

.
.
.

.
.
.

.
.
.

.
.
.

.
.
.

.
.
.

.
.
.

.
.
.

. . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.1. Arrays .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
5.2. Slices
5.3. Maps
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
Indexando un map . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.3.1.
5.3.2. Comprobando la existencia de una clave . . . . . . . . . . . . . . . . .
5.3.3. Borrando una entrada . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.3.4. Bucle for y range . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.4.1. Exportaci´on de tipos . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.4.2. Atributos an´onimos . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.4.3. Conflictos .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5.4. Structs .

.

.

.

.

.

.

.

.

.

.

.

.

.

6. Orientaci´on a Objetos
.

6.1. M´etodos .

.

.

.

. .

. .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.1.1. M´etodos para structs . . . . . . . . . . . . . . . . . . . . . . . . . . .
Invocaci´on de m´etodos . . . . . . . . . . . . . . . . . . . . . . . . . .
6.1.2.
6.1.3. Reglas para el uso de m´etodos . . . . . . . . . . . . . . . . . . . . . .
6.1.4. Punteros y valores en los m´etodos . . . . . . . . . . . . . . . . . . . .
6.1.5. Atributos an´onimos en los m´etodos
. . . . . . . . . . . . . . . . . . .

24
25
26
26
27

28
28
29
30
31
31
32
33
35

38
38
39
39
40
41
41
45
47
51

52
52
54
56
57
57
57
58
58
59
60
61

62
62
62
63
63
63
64

ACM Cap´ıtulo de estudiantes

5

FI - UPM

Curso de Go

6.2.

.

.

.

.

.

.

.

.

6.1.6. M´etodos con otros tipos
. . . . . . . . . . . . . . . . . . . . . . . . .
6.1.7. El m´etodo String()
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.1.8. Visibilidad de atributos y m´etodos . . . . . . . . . . . . . . . . . . . .
Interfaces .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
Introducci´on sobre interfaces . . . . . . . . . . . . . . . . . . . . . . .
6.2.1.
6.2.2. Definici´on de interfaz . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2.3. El tipo interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2.4. El valor interfaz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2.5. Hechos de los interfaces . . . . . . . . . . . . . . . . . . . . . . . . .
6.2.6. Ejemplo: io.Writer
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2.7. Comparaci´on con C++ . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2.8. Contenedores y la interfaz vac´ıa . . . . . . . . . . . . . . . . . . . . .
6.2.9. Asertos de tipos .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2.10. Conversi´on de una interfaz a otra . . . . . . . . . . . . . . . . . . . . .
6.2.11. Probando interfaces con asertos
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2.12. El paquete reflect .

.

7. Concurrencia y comunicaci´on
.
.

7.1. Goroutines .

.
.

.
.

.

.

.

. .

. .

.
.
. .
.

7.2. Channels

.
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
7.1.1. Definici´on .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.1.2. C´omo crear una Goroutine . . . . . . . . . . . . . . . . . . . . . . . .
7.1.3. Verdades delas Goroutines . . . . . . . . . . . . . . . . . . . . . . . .
  • Links de descarga
http://lwp-l.com/pdf9096

Comentarios de: Curso de Go (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad