• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Introduccion a go
 

Introduccion a go

on

  • 618 views

Presentación para las reuniones del AQPGLUG

Presentación para las reuniones del AQPGLUG

Statistics

Views

Total Views
618
Views on SlideShare
618
Embed Views
0

Actions

Likes
0
Downloads
2
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

CC Attribution-ShareAlike LicenseCC Attribution-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Introduccion a go Introduccion a go Presentation Transcript

    • Introducción a GO Carlos Zúñiga
    • ¿Porqué Go?
      • Frustración con lenguajes de sistemas actuales
        • Elegir entre compilación eficiente, ejecución eficiente o facilidad de programación
      • Compiladores lentos
      • Aprovechar procesadores multinúcleo
      • Mejorar el soporte de concurrencia
    • Características
      • Compilación rápida
      • Se siente como un lenguaje dinámico
      • Colector de basura y concurrencia
      • No es un lenguaje orientado a objetos convencional
    • Instalación
      • hg clone -u release https://go.googlecode.com/hg/ go
      • cd go/src
      • ./all.bash
      • Añadir go/bin al $PATH
      • apt-get install golang
    • Ejecución
      • Compilador gc
        • 6g para amd64, 8g para 386
          • 6g programa.go
          • 6l -o programa programa.6
          • ./programa
        • Rápido, genera código OK.
      • Compilador gccgo
          • gccgo -o programa programa.go
        • Código bueno pero no tan rápido.
    • Hello World
        package main import "fmt" func main() { world := " 世界 " fmt.Println("Hello,", world) }
    • Lenguaje
      • Tipos básicos
        • bool
        • string
        • int int8 int16 int32 int64
        • uint uint8(byte) uint16 uint32 uint64 uintptr
        • float32 float64
        • complex64 complex128
    • Lenguaje
      • Variables y tipo a la inversa de C (int a;)
        • var a int
        • var b, c int
        • var d []int
        • var {
        • e, f = 5, "hola"
        • g int
        • }
        • i := 10 //solo dentro de funciones
    • Lenguaje
      • Struct
        • type S struct {
        • x int
        • y string
        • }
    • Lenguaje
      • If
        • No lleva paréntesis, pero las llaves son obligatorias
        • if a := algo() ; a == b {
        • return true
        • } else {
        • return false
        • }
    • Lenguaje
      • For
        • sum := 0
        • for i := 0 ; i < 10 ; i++ {
        • sum += i
        • }
        • for i != 10 {
        • i++
        • }
    • Lenguaje
      • Switch
        • switch a := algo() ; true {
        • case a < 0 : panic(&quot;valor < 0&quot;)
        • case a == 0 :
        • return 0
        • case a == 1 :
        • a *= 100; fallthrough
        • case a > 1 :
        • return a *= v
        • }
    • Lenguaje
      • Slices
        • p := []int{2, 3, 5, 7, 11, 13}
        • q := p[ 1:4 ] // {3, 5, 7}
        • for i := 0; i < len(p); i++ {
        • fmt.Printf(&quot;p[%d] == %dn&quot;, i, p[i])
        • }
        • for i, v := range p {
        • fmt.Printf(&quot;p[%d] == %dn&quot;, i, v)
        • }
    • Lenguaje
      • Funciones
        • func add(x, y int) int {
        • return x + y
        • }
        • func swap(x, y string) (string, string) {
        • return y, x
        • }
    • Lenguaje
      • Interfaces
        • import &quot;math&quot;
        • type Vertex struct {
        • X, Y float64
        • }
        • func (p *Vertex) Abs() float64 {
        • return math.Sqrt(p.X*p.X + p.Y*p.Y)
        • }
    • Lenguaje
      • Interfaces
        • type Writer interface {
        • Write(p []byte) (n int, err os.Error)
        • }
        • var w Writer
        • w = os.Stdout // Stdout implementa Writer
        • fmt.Fprintf(w, &quot;hello, writern&quot;)
    • Lenguaje
      • Manejo de errores
      • func Read(file string) (string, os.Error) {
      • f, err := os.Open(file)
      • if err != nil {
      • return &quot;&quot;, err
      • }
      • defer f.Close() // se llama al acabar
      • // ...implementación
      • return result, nil
      • }
    • Lenguaje
      • Concurrencia: Goroutines
        • func go list.Sort()
        • func Announce(msg string, delay int64) {
        • go func() {
        • time.Sleep(delay)
        • fmt.Println(msg)
        • }()
        • }
    • Lenguaje
      • Channels
        • c := make(chan int) // crear el canal
        • go func() {
        • c <- operacion()
        • }()
        • hacerOtrasCosas()
        • d := <-c //obtiene el valor
    • Paquetes
      • El programa inicia en main.main
        • package main
        • import {
        • format &quot; fmt &quot;
        • &quot; template/parse &quot;
        • }
        • func main() {
        • //...
        • }
    • Herramientas
      • gofix: reescribe programas usando las apis antiguas
      • godoc: extrae documentación del código fuente
      • gofmt: formatea el código fuente
    • Proyectos
      • web.go: framework web
      • go-gtk: bindings para GTK
      • mgo: drivers para MongoDB
      • mustache.go: lenguaje de templates
      • appengine-go: SDK para App Engine
      • Paquetes más populares: http://godashboard.appspot.com/package
    • Benchmarks
        Fuente: Computer Language Benchmarks Game
    • Benchmarks
        Fuente: Computer Language Benchmarks Game