SlideShare ist ein Scribd-Unternehmen logo
1 von 20
Downloaden Sie, um offline zu lesen
Lightning talks




Rodrigo Hübner
O que têm?
●   Nova :)
●   Experimental ¬¬
●   Concorrente :D
●   Coletor de lixo ¬¬
●   Programação de Sistemas o/
●   Linguagem divertida e moderna
Maaais sobre o Compilador
●   Impressão de tipagem dinâmica em um sistema
    de tipo estático
    ●   Tipos são bem flexíveis
●   Existe métodos mas não NÃO é OO
●   Compilador 6g (ken)
    ●   Experimental, código ótimo e rápido, não liga GCC
●   Compilador gccgo (iant)
    ●   Tradicional, código bom e não tão rápido, liga GCC
Olá Mundo
package main
import "fmt"
func main() {
    fmt.Print("Hello, Worldn")
}
Variáveis e Estruturas de Controle
var a int
var b, c *int // note a diferença com C
var d []int
type S struct { a, b int }


if a == b { return true } else { return false }


for i = 0; i < 10; i++ { ... }
Algumas mudanças em relação a C
+x
23 + 3*x[i]
x <= f()
^a >> b
f() || g()
x == y + 1 && <­chan_ptr > 0
x &^ 7  // x com 3 bits baixos em 0
fmt.Printf("%5.2gn", 2*math.Sin(PI/8))
"hello" ", " "there" // concatenação léxica
"hello, " + str // concatenação dinâmica
Vamos melhorar
var (
    i int;
    j = 356.245;
    k int = 0;
    l, m uint64 = 1, 2;
    billion int64 = 1e9;
    inter, floater, stringer = 1, 2.0, "hi"
)
iota
const (
    Monday = iota;
    Tuesday = iota;
)
If aprimorado
if v := f(); v < 10 {
    fmt.Printf("%d less than 10n", v)
} else {
    fmt.Printf("%d not less than 10", v)
}




if n, err = fd.Write(buf); err != nil { ... }
for aprimorado
for i,j := 0,N; i < j; i,j = i+1,j­1 {...}
Switch-case
a, b := x[i], y[j];
switch {
    case a < b: return ­1
    case a == b: return 0
    case a > b: return 1
}
ou
switch a, b := x[i], y[j]; { ... }
Break ?
Loop: for i := 0; i < 10; i++ {
    switch f(i) {
        case 0, 1, 2: break Loop
    }
    g(i)
}
Funções e retornos

func MySqrt(f float) (v float, ok bool) {
    if f >= 0 { v,ok = math.Sqrt(f),true }
    return v,ok
}


func MySqrt(f float) (v float, ok bool) {
    if f >= 0 { v,ok = math.Sqrt(f),true }
    return // must be explicit
}


func MySqrt(f float) (v float, ok bool) {
    if f < 0 { return } // error case
    return math.Sqrt(f),true
}
defer
func f() {
    for i := 0; i < 5; i++ {
        defer fmt.Printf("%d ", i)
    }
}
// prints 4 3 2 1 0
Arrays e operações
func fp(a *[3]int) { fmt.Println(a) }
func main() {
    for i := 0; i < 3; i++ 
        fp(&[3]int{i, i*i, i*i*i})
    }
}
Saída:
&[0 0 0]
&[1 1 1]
&[2 4 8]


var ar = [10]int{0,1,2,3,4,5,6,7,8,9}
var a = &ar[5:7] // referencia → {5,6}
Maps
m = map[string]float { "1":1, "pi":3.1415 }
// Acessar um elemento como um valor
one := m["1"]
crash := m["not present"] // error
// Criar novos elementos e atualizá­los
m["2"] = 2;
m["2"] = 3;


// Em laço for
m := map[string]float { "1":1.0, "pi":3.1415 };
for key, value := range m {
    fmt.Printf("key %s, value %gn", key, value)
}
closures
func adder() (func(int) int) {
    var x int;
    return func(delta int) int {
        x += delta;
        return x
    }
}
var f = adder();
fmt.Print(f(1));
fmt.Print(f(20));
fmt.Print(f(300));


// Imprime 1 21 321
Bibliotecas
Paralelismo
var freeList = make(chan *Buffer, 100)
var serverChan = make(chan *Buffer)
func server() {
    for {
        b := <-serverChan; // wait for work
        process(b);
        ok := freeList <- b // reuse buffer if room
    }
}
func client() {
    for {
        b, ok := <-freeList; // grab one if available
        if !ok { b = new(Buffer) }
        load(b);
        serverChan <- b // send to server
    }
}
Mais

●   Métodos em structs
●   Interfaces
    ●   Many to many
●   Iterators e generators
●   http://golang.org/

Weitere ähnliche Inhalte

Was ist angesagt?

Why functional programming matters
Why functional programming mattersWhy functional programming matters
Why functional programming mattersJean Carlo Machado
 
Exercício da lógica (16 ao 25)
Exercício da lógica (16 ao 25)Exercício da lógica (16 ao 25)
Exercício da lógica (16 ao 25)gabimonteiro1455555
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 5
Implementação de Aplicações Móveis e Jogos com Python - Aula 5Implementação de Aplicações Móveis e Jogos com Python - Aula 5
Implementação de Aplicações Móveis e Jogos com Python - Aula 5Flávio Ribeiro
 
TDC2016SP - Trilha Node.Js
TDC2016SP - Trilha Node.JsTDC2016SP - Trilha Node.Js
TDC2016SP - Trilha Node.Jstdc-globalcode
 
(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...
(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...
(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...Danilo J. S. Bellini
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 4
Implementação de Aplicações Móveis e Jogos com Python - Aula 4Implementação de Aplicações Móveis e Jogos com Python - Aula 4
Implementação de Aplicações Móveis e Jogos com Python - Aula 4Flávio Ribeiro
 
Tratamento de exceções em GO
Tratamento de exceções em GOTratamento de exceções em GO
Tratamento de exceções em GOKarla Tahan
 
Avaliação 9º ano 3º b.
Avaliação 9º ano 3º b.Avaliação 9º ano 3º b.
Avaliação 9º ano 3º b.flavio falsoni
 
JavaScript - De verdade
JavaScript - De verdadeJavaScript - De verdade
JavaScript - De verdadeLuis Vendrame
 
Shell Scripting
Shell ScriptingShell Scripting
Shell Scriptingdcarneir
 
2 funcoes e estrutura de blocos
2   funcoes e estrutura de blocos2   funcoes e estrutura de blocos
2 funcoes e estrutura de blocosRicardo Bolanho
 
Aula5 introducao c
Aula5 introducao cAula5 introducao c
Aula5 introducao cprofwtelles
 

Was ist angesagt? (20)

Why functional programming matters
Why functional programming mattersWhy functional programming matters
Why functional programming matters
 
Tdc2010
Tdc2010Tdc2010
Tdc2010
 
Exercício da lógica (16 ao 25)
Exercício da lógica (16 ao 25)Exercício da lógica (16 ao 25)
Exercício da lógica (16 ao 25)
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 5
Implementação de Aplicações Móveis e Jogos com Python - Aula 5Implementação de Aplicações Móveis e Jogos com Python - Aula 5
Implementação de Aplicações Móveis e Jogos com Python - Aula 5
 
TDC2016SP - Trilha Node.Js
TDC2016SP - Trilha Node.JsTDC2016SP - Trilha Node.Js
TDC2016SP - Trilha Node.Js
 
Lista de exercícios XIV Python para Zumbis
Lista de exercícios XIV Python para ZumbisLista de exercícios XIV Python para Zumbis
Lista de exercícios XIV Python para Zumbis
 
(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...
(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...
(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...
 
programação c 3 aula
programação c 3 aulaprogramação c 3 aula
programação c 3 aula
 
Curso de Node JS Básico
Curso de Node JS BásicoCurso de Node JS Básico
Curso de Node JS Básico
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 4
Implementação de Aplicações Móveis e Jogos com Python - Aula 4Implementação de Aplicações Móveis e Jogos com Python - Aula 4
Implementação de Aplicações Móveis e Jogos com Python - Aula 4
 
Tratamento de exceções em GO
Tratamento de exceções em GOTratamento de exceções em GO
Tratamento de exceções em GO
 
Avaliação 9º ano 3º b.
Avaliação 9º ano 3º b.Avaliação 9º ano 3º b.
Avaliação 9º ano 3º b.
 
Pilha ad
Pilha adPilha ad
Pilha ad
 
TDD
TDDTDD
TDD
 
Função malloc
Função mallocFunção malloc
Função malloc
 
JavaScript - De verdade
JavaScript - De verdadeJavaScript - De verdade
JavaScript - De verdade
 
Shell Scripting
Shell ScriptingShell Scripting
Shell Scripting
 
2 funcoes e estrutura de blocos
2   funcoes e estrutura de blocos2   funcoes e estrutura de blocos
2 funcoes e estrutura de blocos
 
Spring Capitulo 03
Spring Capitulo 03Spring Capitulo 03
Spring Capitulo 03
 
Aula5 introducao c
Aula5 introducao cAula5 introducao c
Aula5 introducao c
 

Andere mochten auch

Andere mochten auch (6)

Conhecendo Go
Conhecendo GoConhecendo Go
Conhecendo Go
 
Linguagem Go
Linguagem GoLinguagem Go
Linguagem Go
 
"Go" Contra ou a favor? Já vale a pena investir nessa linguagem?
"Go" Contra ou a favor? Já vale a pena investir nessa linguagem?"Go" Contra ou a favor? Já vale a pena investir nessa linguagem?
"Go" Contra ou a favor? Já vale a pena investir nessa linguagem?
 
Programando em Go
Programando em GoProgramando em Go
Programando em Go
 
Go Lang
Go LangGo Lang
Go Lang
 
Construindo um Servidor Web com GO
Construindo um Servidor Web com GOConstruindo um Servidor Web com GO
Construindo um Servidor Web com GO
 

Ähnlich wie Lightning talks on Go language features

Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)Luciano Ramalho
 
Leonardo Zamariola - High Order Functions e Functional Interfaces
Leonardo Zamariola - High Order Functions e Functional InterfacesLeonardo Zamariola - High Order Functions e Functional Interfaces
Leonardo Zamariola - High Order Functions e Functional InterfacesDevCamp Campinas
 
Sobre programas e funções: pensando em abstração
Sobre programas e funções: pensando em abstraçãoSobre programas e funções: pensando em abstração
Sobre programas e funções: pensando em abstraçãoArthur Xavier
 
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop PythonIEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop PythonDiogo Gomes
 
Spock Framework 2
Spock Framework 2Spock Framework 2
Spock Framework 2Ismael
 
Cartao referencia ccs
Cartao referencia ccsCartao referencia ccs
Cartao referencia ccsLuciano Zica
 
InterCon 2017 - Programação funcional no desenvolvimento de aplicações: pensa...
InterCon 2017 - Programação funcional no desenvolvimento de aplicações: pensa...InterCon 2017 - Programação funcional no desenvolvimento de aplicações: pensa...
InterCon 2017 - Programação funcional no desenvolvimento de aplicações: pensa...iMasters
 
Usando POP com Programação Funcional
Usando POP com Programação FuncionalUsando POP com Programação Funcional
Usando POP com Programação FuncionalTales Andrade
 
RevisãoCompactaFuncoesPonteiro.pptx
RevisãoCompactaFuncoesPonteiro.pptxRevisãoCompactaFuncoesPonteiro.pptx
RevisãoCompactaFuncoesPonteiro.pptxClaudia Ferlin
 
Conhecendo ou relembrando C
Conhecendo ou relembrando CConhecendo ou relembrando C
Conhecendo ou relembrando CVinícius Hax
 
Python ES 2017 - Introdução ao Tensorflow
Python ES 2017 - Introdução ao TensorflowPython ES 2017 - Introdução ao Tensorflow
Python ES 2017 - Introdução ao TensorflowFabrício Vargas Matos
 
Controle de Fluxo, Exceções, Assertivas
Controle de Fluxo, Exceções, AssertivasControle de Fluxo, Exceções, Assertivas
Controle de Fluxo, Exceções, AssertivasElenilson Vieira
 

Ähnlich wie Lightning talks on Go language features (20)

Sobrecarga operadores
Sobrecarga operadoresSobrecarga operadores
Sobrecarga operadores
 
Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)
 
Leonardo Zamariola - High Order Functions e Functional Interfaces
Leonardo Zamariola - High Order Functions e Functional InterfacesLeonardo Zamariola - High Order Functions e Functional Interfaces
Leonardo Zamariola - High Order Functions e Functional Interfaces
 
Usando o winplot
Usando o winplotUsando o winplot
Usando o winplot
 
Aula 1 | Introdução a C++
Aula 1 | Introdução a C++Aula 1 | Introdução a C++
Aula 1 | Introdução a C++
 
Aula17
Aula17Aula17
Aula17
 
Introducao Google GO
Introducao Google GOIntroducao Google GO
Introducao Google GO
 
Sobre programas e funções: pensando em abstração
Sobre programas e funções: pensando em abstraçãoSobre programas e funções: pensando em abstração
Sobre programas e funções: pensando em abstração
 
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop PythonIEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
 
Spock Framework 2
Spock Framework 2Spock Framework 2
Spock Framework 2
 
Cartao referencia ccs
Cartao referencia ccsCartao referencia ccs
Cartao referencia ccs
 
InterCon 2017 - Programação funcional no desenvolvimento de aplicações: pensa...
InterCon 2017 - Programação funcional no desenvolvimento de aplicações: pensa...InterCon 2017 - Programação funcional no desenvolvimento de aplicações: pensa...
InterCon 2017 - Programação funcional no desenvolvimento de aplicações: pensa...
 
Usando POP com Programação Funcional
Usando POP com Programação FuncionalUsando POP com Programação Funcional
Usando POP com Programação Funcional
 
RevisãoCompactaFuncoesPonteiro.pptx
RevisãoCompactaFuncoesPonteiro.pptxRevisãoCompactaFuncoesPonteiro.pptx
RevisãoCompactaFuncoesPonteiro.pptx
 
Conhecendo ou relembrando C
Conhecendo ou relembrando CConhecendo ou relembrando C
Conhecendo ou relembrando C
 
Curso de Simulink
Curso de SimulinkCurso de Simulink
Curso de Simulink
 
Aula5 introducao c
Aula5 introducao cAula5 introducao c
Aula5 introducao c
 
Python ES 2017 - Introdução ao Tensorflow
Python ES 2017 - Introdução ao TensorflowPython ES 2017 - Introdução ao Tensorflow
Python ES 2017 - Introdução ao Tensorflow
 
Tdc2010 web
Tdc2010 webTdc2010 web
Tdc2010 web
 
Controle de Fluxo, Exceções, Assertivas
Controle de Fluxo, Exceções, AssertivasControle de Fluxo, Exceções, Assertivas
Controle de Fluxo, Exceções, Assertivas
 

Mehr von flisolmaringa

Desenvolvimento de jogos para iOS com Cocos2d
Desenvolvimento de jogos para iOS com Cocos2dDesenvolvimento de jogos para iOS com Cocos2d
Desenvolvimento de jogos para iOS com Cocos2dflisolmaringa
 
Introdução ao LaTeX
Introdução ao LaTeXIntrodução ao LaTeX
Introdução ao LaTeXflisolmaringa
 
ZFS – Zettabyte File System
ZFS – Zettabyte File SystemZFS – Zettabyte File System
ZFS – Zettabyte File Systemflisolmaringa
 
Platinum Arts Sandbox - Game Maker
Platinum Arts Sandbox - Game MakerPlatinum Arts Sandbox - Game Maker
Platinum Arts Sandbox - Game Makerflisolmaringa
 
Introdução ao processamento paralelo com o Grand Central Dispatch
Introdução ao processamento paralelo com o Grand Central DispatchIntrodução ao processamento paralelo com o Grand Central Dispatch
Introdução ao processamento paralelo com o Grand Central Dispatchflisolmaringa
 
Apresentando o FreeBSD
Apresentando o FreeBSDApresentando o FreeBSD
Apresentando o FreeBSDflisolmaringa
 
Sugar: Um sistema operacional para crianças
Sugar: Um sistema operacional para criançasSugar: Um sistema operacional para crianças
Sugar: Um sistema operacional para criançasflisolmaringa
 
Software livre: filosofia, utopia ou alternativa viável?
Software livre: filosofia, utopia ou alternativa viável?Software livre: filosofia, utopia ou alternativa viável?
Software livre: filosofia, utopia ou alternativa viável?flisolmaringa
 
Apresentando o FreeBSD
Apresentando o FreeBSDApresentando o FreeBSD
Apresentando o FreeBSDflisolmaringa
 

Mehr von flisolmaringa (11)

Linux de A a Z
Linux de A a ZLinux de A a Z
Linux de A a Z
 
Desenvolvimento de jogos para iOS com Cocos2d
Desenvolvimento de jogos para iOS com Cocos2dDesenvolvimento de jogos para iOS com Cocos2d
Desenvolvimento de jogos para iOS com Cocos2d
 
Introdução ao LaTeX
Introdução ao LaTeXIntrodução ao LaTeX
Introdução ao LaTeX
 
ZFS – Zettabyte File System
ZFS – Zettabyte File SystemZFS – Zettabyte File System
ZFS – Zettabyte File System
 
Platinum Arts Sandbox - Game Maker
Platinum Arts Sandbox - Game MakerPlatinum Arts Sandbox - Game Maker
Platinum Arts Sandbox - Game Maker
 
Introdução ao processamento paralelo com o Grand Central Dispatch
Introdução ao processamento paralelo com o Grand Central DispatchIntrodução ao processamento paralelo com o Grand Central Dispatch
Introdução ao processamento paralelo com o Grand Central Dispatch
 
Apresentando o FreeBSD
Apresentando o FreeBSDApresentando o FreeBSD
Apresentando o FreeBSD
 
Sugar: Um sistema operacional para crianças
Sugar: Um sistema operacional para criançasSugar: Um sistema operacional para crianças
Sugar: Um sistema operacional para crianças
 
Software livre: filosofia, utopia ou alternativa viável?
Software livre: filosofia, utopia ou alternativa viável?Software livre: filosofia, utopia ou alternativa viável?
Software livre: filosofia, utopia ou alternativa viável?
 
Django
DjangoDjango
Django
 
Apresentando o FreeBSD
Apresentando o FreeBSDApresentando o FreeBSD
Apresentando o FreeBSD
 

Lightning talks on Go language features