let’s go
@andrewsmedina
http://andrewsmedina.com
let’s go
Saturday, May 11, 2013
Slide 2
Slide 2 text
globo
.com
@andrewsmedina
‣ dev na globo.com
‣ faz parte do time do tsuru paas
‣ contribui com projetos opensource (django, circus, splinter...)
‣ profeta nas horas vagas
Saturday, May 11, 2013
Slide 3
Slide 3 text
globo
.com
por que go?
Saturday, May 11, 2013
Slide 4
Slide 4 text
globo
.com
linguagens estáticas
‣ rápidas
‣ erros a nível de compilação
Saturday, May 11, 2013
Slide 5
Slide 5 text
globo
.com
http://www.thinkgeek.com/product/dac0/
Saturday, May 11, 2013
Slide 6
Slide 6 text
globo
.com
linguagens estáticas
‣ verbosas
‣ build lento
Saturday, May 11, 2013
globo
.com
hello world
package main
import "fmt"
func main() {
fmt.Println("hello devcamp!")
}
Saturday, May 11, 2013
Slide 13
Slide 13 text
globo
.com
hello world 2 - a missão
package main
import "fmt"
func main() {
nome := “andrews”
fmt.Printf("meu nome é %s\n", nome)
}
Saturday, May 11, 2013
Slide 14
Slide 14 text
globo
.com
tipagem (estática)
‣ estática
‣ inferência de tipos
Saturday, May 11, 2013
Slide 15
Slide 15 text
globo
.com
for
package main
import "fmt"
func main() {
for i := 0; i <= 10; i++ {
fmt.Println(i)
}
}
Saturday, May 11, 2013
Slide 16
Slide 16 text
globo
.com
primos
func ehPrimo(numero int) bool {
for i := 2; i < numero; i++ {
if numero % i == 0 {
return false
}
}
return true
}
Saturday, May 11, 2013
Slide 17
Slide 17 text
globo
.com
primos cont..
func main() {
numeros := []int{3, 5, 6, 7, 10, 11, 22, 32, 43, 111}
for _, numero := range numeros {
if ehPrimo(numero) {
fmt.Printf("%d é primo.\n", numero)
}
}
}
Saturday, May 11, 2013
globo
.com
interfaces
func aceleraQualquerCoisa(items []Aceleravel) {
for _, aceleravel := range items {
aceleravel.Acelera()
}
}
Saturday, May 11, 2013
Slide 27
Slide 27 text
globo
.com
interfaces
c := Carro{Modelo: "Gol"}
m := Moto{Modelo: "Harley"}
aceleraQualquerCoisa([]Aceleravel{&c, &m})
Saturday, May 11, 2013
Slide 28
Slide 28 text
globo
.com
concorrência
Saturday, May 11, 2013
Slide 29
Slide 29 text
globo
.com
bebedouro
func main() {
pessoas := []string{"andrews", "linus", "fowler"}
for _, p := range pessoas {
pegaAgua(p)
go bebeAgua(p)
}
time.Sleep(1)
}
Saturday, May 11, 2013
Slide 30
Slide 30 text
globo
.com
goroutine
‣ “go”
Saturday, May 11, 2013
Slide 31
Slide 31 text
globo
.com
channels
func soma(x, y int, c chan int) {
c <- x + y
}
func main() {
c := make(chan int)
go soma(1, 1, c)
go soma(2, 2, c)
x, y := <-c, <-c
fmt.Println(x+y)
}
Saturday, May 11, 2013
Slide 32
Slide 32 text
globo
.com
channels
‣ <-
‣ chan int
Saturday, May 11, 2013