+ All Categories
Home > Technology > A Linguagem de Programação Go

A Linguagem de Programação Go

Date post: 15-Jan-2015
Category:
Upload: francisco-souza
View: 1,657 times
Download: 7 times
Share this document with a friend
Description:
Lighting talk apresentada no Dev in Cachu 2012.
Popular Tags:
29
Francisco Souza @franciscosouza Sunday, May 6, 12
Transcript
Page 1: A Linguagem de Programação Go

Francisco Souza@franciscosouza

Sunday, May 6, 12

Page 2: A Linguagem de Programação Go

Por que Go?

Sunday, May 6, 12

Page 3: A Linguagem de Programação Go

Linguagens estáticas são rápidas, mas...

Sunday, May 6, 12

Page 4: A Linguagem de Programação Go

Linguagens estáticas são rápidas, mas...

public static <I, O> ListenableFuture <O> chain(ListenableFuture<I> input, Function<? super I, ? extends ListenableFuture<? extends O>> function)

Sunday, May 6, 12

Page 5: A Linguagem de Programação Go

Python e Ruby são dinâmicos! :D

Sunday, May 6, 12

Page 6: A Linguagem de Programação Go

Linguagens dinâmicas são divertidas, mas...

Sunday, May 6, 12

Page 7: A Linguagem de Programação Go

Linguagens dinâmicas são divertidas, mas...

• Pecam no desempenho :(

Sunday, May 6, 12

Page 8: A Linguagem de Programação Go

“Speed, reliability, or simplicity: pick two.” (sometimes just one)

Sunday, May 6, 12

Page 9: A Linguagem de Programação Go

“Speed, reliability, or simplicity: pick two.” (sometimes just one)

Can’t we do better?

Sunday, May 6, 12

Page 10: A Linguagem de Programação Go

Compilada

% 6g duck.go% 6l duck.6

Sunday, May 6, 12

Page 11: A Linguagem de Programação Go

Tipagem estática...

var numero int

Sunday, May 6, 12

Page 12: A Linguagem de Programação Go

mas com inferência de tipo...

var numero = 0numero := 0

Sunday, May 6, 12

Page 13: A Linguagem de Programação Go

mas com inferência de tipo...

var numero = 0numero := 0

Sunday, May 6, 12

Page 14: A Linguagem de Programação Go

Tipagem simplesJava

C++

Go

Sunday, May 6, 12

Page 15: A Linguagem de Programação Go

Tipagem simples

Integer i = new Integer(10);Java

C++

Go

Sunday, May 6, 12

Page 16: A Linguagem de Programação Go

Tipagem simples

Integer i = new Integer(10);Java

int i = 10;

C++

Go

Sunday, May 6, 12

Page 17: A Linguagem de Programação Go

Tipagem simples

Integer i = new Integer(10);Java

int i = 10;

C++

Go

i := 10

Sunday, May 6, 12

Page 18: A Linguagem de Programação Go

Definição de tipos

type MyInt int

Sunday, May 6, 12

Page 19: A Linguagem de Programação Go

Métodos

type Conta struct { saldo float64 limite float64}

func (c *C) Sacar(valor float64) { if c.valor <= c.limite { c.saldo -= valor }}

Sunday, May 6, 12

Page 20: A Linguagem de Programação Go

Interfaces“Duck typing”

type Duck interface {! Quak()! Walk()}

Sunday, May 6, 12

Page 21: A Linguagem de Programação Go

Usando a interface

func DuckDance(duck Duck) {! duck.Quak()! duck.Walk()! duck.Quak()! duck.Walk()! duck.Quak()! duck.Walk()}

Sunday, May 6, 12

Page 22: A Linguagem de Programação Go

type Chicken struct { }

func (a *Chicken) Quak() {! fmt.Println("Quak")}

func (a *Chicken) Walk() {! fmt.Println("Walking")}

Sunday, May 6, 12

Page 23: A Linguagem de Programação Go

Funções anônimas

func () { fmt.Println("Oi pessoal!")}

Sunday, May 6, 12

Page 24: A Linguagem de Programação Go

Concorrência

func DoSomething() { // doing something}go DoSomething()

Sunday, May 6, 12

Page 25: A Linguagem de Programação Go

Comunicação/sincronização

“Don’t communicate by sharing memory, share memory by communicating”

Sunday, May 6, 12

Page 26: A Linguagem de Programação Go

Channels

var ch chan intvar age intch = make(chan int)go func() { ch <- 1}()age = <-ch

Sunday, May 6, 12

Page 27: A Linguagem de Programação Go

Channels

var ch chan intvar age intch = make(chan int)go func() { ch <- 1}()age = <-ch

Sunday, May 6, 12

Page 28: A Linguagem de Programação Go

Channels

var ch chan intvar age intch = make(chan int)go func() { ch <- 1}()age = <-ch

Sunday, May 6, 12

Page 29: A Linguagem de Programação Go

Sunday, May 6, 12


Recommended