Your SlideShare is downloading. ×
0
Introduccion a go
Introduccion a go
Introduccion a go
Introduccion a go
Introduccion a go
Introduccion a go
Introduccion a go
Introduccion a go
Introduccion a go
Introduccion a go
Introduccion a go
Introduccion a go
Introduccion a go
Introduccion a go
Introduccion a go
Introduccion a go
Introduccion a go
Introduccion a go
Introduccion a go
Introduccion a go
Introduccion a go
Introduccion a go
Introduccion a go
Introduccion a go
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Introduccion a go

449

Published on

Presentación para las reuniones del AQPGLUG

Presentación para las reuniones del AQPGLUG

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
449
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Introducción a GO Carlos Zúñiga
  • 2. ¿Porqué Go?
    • Frustración con lenguajes de sistemas actuales
      • Elegir entre compilación eficiente, ejecución eficiente o facilidad de programación
    • Compiladores lentos
    • 3. Aprovechar procesadores multinúcleo
    • 4. Mejorar el soporte de concurrencia
  • 5. Características
    • Compilación rápida
    • 6. Se siente como un lenguaje dinámico
    • 7. Colector de basura y concurrencia
    • 8. No es un lenguaje orientado a objetos convencional
  • 9. Instalación
    • hg clone -u release https://go.googlecode.com/hg/ go
    • 10. cd go/src
    • 11. ./all.bash
    • Añadir go/bin al $PATH
    • apt-get install golang
  • 12. Ejecución
    • Compilador gc
      • 6g para amd64, 8g para 386
        • 6g programa.go
        • 13. 6l -o programa programa.6
        • 14. ./programa
      • Rápido, genera código OK.
    • Compilador gccgo
        • gccgo -o programa programa.go
      • Código bueno pero no tan rápido.
  • 15. Hello World
      package main import "fmt" func main() { world := " 世界 " fmt.Println("Hello,", world) }
  • 16. Lenguaje
    • Tipos básicos
      • bool
      • 17. string
      • 18. int int8 int16 int32 int64
      • 19. uint uint8(byte) uint16 uint32 uint64 uintptr
      • 20. float32 float64
      • 21. complex64 complex128
  • 22. Lenguaje
    • Variables y tipo a la inversa de C (int a;)
  • 30. Lenguaje
  • 34. Lenguaje
    • If
      • No lleva paréntesis, pero las llaves son obligatorias
      • 35. if a := algo() ; a == b {
      • 36. return true
      • 37. } else {
      • 38. return false
      • 39. }
  • 40. Lenguaje
  • 47. Lenguaje
  • 56. Lenguaje
    • Slices
      • p := []int{2, 3, 5, 7, 11, 13}
      • 57. q := p[ 1:4 ] // {3, 5, 7}
      • 58. for i := 0; i < len(p); i++ {
      • 59. fmt.Printf(&quot;p[%d] == %dn&quot;, i, p[i])
      • 60. }
      • 61. for i, v := range p {
      • 62. fmt.Printf(&quot;p[%d] == %dn&quot;, i, v)
      • 63. }
  • 64. Lenguaje
    • Funciones
  • 70. Lenguaje
    • Interfaces
      • import &quot;math&quot;
      • 71. type Vertex struct {
      • 72. X, Y float64
      • 73. }
      • 74. func (p *Vertex) Abs() float64 {
      • 75. return math.Sqrt(p.X*p.X + p.Y*p.Y)
      • 76. }
  • 77. Lenguaje
    • Interfaces
      • type Writer interface {
      • 78. Write(p []byte) (n int, err os.Error)
      • 79. }
      • 80. var w Writer
      • 81. w = os.Stdout // Stdout implementa Writer
      • 82. fmt.Fprintf(w, &quot;hello, writern&quot;)
  • 83. Lenguaje
    • Manejo de errores
    • 84. func Read(file string) (string, os.Error) {
    • 85. f, err := os.Open(file)
    • 86. if err != nil {
    • 87. return &quot;&quot;, err
    • 88. }
    • 89. defer f.Close() // se llama al acabar
    • 90. // ...implementación
    • 91. return result, nil
    • 92. }
  • 93. Lenguaje
    • Concurrencia: Goroutines
  • 100. Lenguaje
    • Channels
  • 106. Paquetes
  • 114. Herramientas
    • gofix: reescribe programas usando las apis antiguas
    • 115. godoc: extrae documentación del código fuente
    • 116. gofmt: formatea el código fuente
  • 117. Proyectos
    • web.go: framework web
    • 118. go-gtk: bindings para GTK
    • 119. mgo: drivers para MongoDB
    • 120. mustache.go: lenguaje de templates
    • 121. appengine-go: SDK para App Engine
    • 122. Paquetes más populares: http://godashboard.appspot.com/package
  • 123. Benchmarks
      Fuente: Computer Language Benchmarks Game
  • 124. Benchmarks
      Fuente: Computer Language Benchmarks Game

×