0
Lightning talksRodrigo Hübner
O que têm?●   Nova :)●   Experimental ¬¬●   Concorrente :D●   Coletor de lixo ¬¬●   Programação de Sistemas o/●   Linguage...
Maaais sobre o Compilador●   Impressão de tipagem dinâmica em um sistema    de tipo estático    ●   Tipos são bem flexívei...
Olá Mundopackage mainimport "fmt"func main() {    fmt.Print("Hello, Worldn")}
Variáveis e Estruturas de Controlevar a intvar b, c *int // note a diferença com Cvar d []inttype S struct { a, b int }if ...
Algumas mudanças em relação a C+x23 + 3*x[i]x <= f()^a >> bf() || g()x == y + 1 && <­chan_ptr > 0x &^ 7  // x com 3 bits b...
Vamos melhorarvar (    i int;    j = 356.245;    k int = 0;    l, m uint64 = 1, 2;    billion int64 = 1e9;    inter, float...
iotaconst (    Monday = iota;    Tuesday = iota;)
If aprimoradoif v := f(); v < 10 {    fmt.Printf("%d less than 10n", v)} else {    fmt.Printf("%d not less than 10", v)}if...
for aprimoradofor i,j := 0,N; i < j; i,j = i+1,j­1 {...}
Switch-casea, b := x[i], y[j];switch {    case a < b: return ­1    case a == b: return 0    case a > b: return 1}ouswitch ...
Break ?Loop: for i := 0; i < 10; i++ {    switch f(i) {        case 0, 1, 2: break Loop    }    g(i)}
Funções e retornosfunc MySqrt(f float) (v float, ok bool) {    if f >= 0 { v,ok = math.Sqrt(f),true }    return v,ok}func ...
deferfunc f() {    for i := 0; i < 5; i++ {        defer fmt.Printf("%d ", i)    }}// prints 4 3 2 1 0
Arrays e operaçõesfunc fp(a *[3]int) { fmt.Println(a) }func main() {    for i := 0; i < 3; i++         fp(&[3]int{i, i*i, ...
Mapsm = map[string]float { "1":1, "pi":3.1415 }// Acessar um elemento como um valorone := m["1"]crash := m["not present"] ...
closuresfunc adder() (func(int) int) {    var x int;    return func(delta int) int {        x += delta;        return x   ...
Bibliotecas
Paralelismovar freeList = make(chan *Buffer, 100)var serverChan = make(chan *Buffer)func server() {    for {        b := <...
Mais●   Métodos em structs●   Interfaces    ●   Many to many●   Iterators e generators●   http://golang.org/
Upcoming SlideShare
Loading in...5
×

Linguagem Go

1,399

Published on

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
1,399
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
22
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Linguagem Go"

  1. 1. Lightning talksRodrigo Hübner
  2. 2. O que têm?● Nova :)● Experimental ¬¬● Concorrente :D● Coletor de lixo ¬¬● Programação de Sistemas o/● Linguagem divertida e moderna
  3. 3. 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
  4. 4. Olá Mundopackage mainimport "fmt"func main() {    fmt.Print("Hello, Worldn")}
  5. 5. Variáveis e Estruturas de Controlevar a intvar b, c *int // note a diferença com Cvar d []inttype S struct { a, b int }if a == b { return true } else { return false }for i = 0; i < 10; i++ { ... }
  6. 6. Algumas mudanças em relação a C+x23 + 3*x[i]x <= f()^a >> bf() || g()x == y + 1 && <­chan_ptr > 0x &^ 7  // x com 3 bits baixos em 0fmt.Printf("%5.2gn", 2*math.Sin(PI/8))"hello" ", " "there" // concatenação léxica"hello, " + str // concatenação dinâmica
  7. 7. Vamos melhorarvar ( i int; j = 356.245; k int = 0; l, m uint64 = 1, 2; billion int64 = 1e9; inter, floater, stringer = 1, 2.0, "hi")
  8. 8. iotaconst ( Monday = iota; Tuesday = iota;)
  9. 9. If aprimoradoif 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 { ... }
  10. 10. for aprimoradofor i,j := 0,N; i < j; i,j = i+1,j­1 {...}
  11. 11. Switch-casea, b := x[i], y[j];switch {    case a < b: return ­1    case a == b: return 0    case a > b: return 1}ouswitch a, b := x[i], y[j]; { ... }
  12. 12. Break ?Loop: for i := 0; i < 10; i++ {    switch f(i) {        case 0, 1, 2: break Loop    }    g(i)}
  13. 13. Funções e retornosfunc 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}
  14. 14. deferfunc f() {    for i := 0; i < 5; i++ {        defer fmt.Printf("%d ", i)    }}// prints 4 3 2 1 0
  15. 15. Arrays e operaçõesfunc 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}
  16. 16. Mapsm = map[string]float { "1":1, "pi":3.1415 }// Acessar um elemento como um valorone := m["1"]crash := m["not present"] // error// Criar novos elementos e atualizá­losm["2"] = 2;m["2"] = 3;// Em laço form := map[string]float { "1":1.0, "pi":3.1415 };for key, value := range m {    fmt.Printf("key %s, value %gn", key, value)}
  17. 17. closuresfunc 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
  18. 18. Bibliotecas
  19. 19. Paralelismovar 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 }}
  20. 20. Mais● Métodos em structs● Interfaces ● Many to many● Iterators e generators● http://golang.org/
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×