Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introdução a Go

Introdução a Go

Nesta palestra faço uma introdução a linguagem Go

0227f6274b8a6cce078d7f8a91460c41?s=128

Elton Minetto

May 11, 2022
Tweet

More Decks by Elton Minetto

Other Decks in Programming

Transcript

  1. Introdução a Go

  2. Elton Minetto ๏ Escrevo códigos, sou professor, palestrante, e escritor

    ๏ Escrevo no https://eltonminetto.dev e no twitter ๏ Sou Principal Software Engineer no PicPay
  3. O que é?

  4. Uma linguagem open source

  5. None
  6. Por que uma nova linguagem?

  7. Muitos problemas com software em grande escala

  8. Velocidade de compilação

  9. Sistemas distribuídos Multicore

  10. Objetivos

  11. Semântica simples

  12. Tipagem estática

  13. Programação concorrente

  14. Divertida!

  15. TALK IS CHEAP, SHOW ME THE CODE!

  16. Pacotes package main import ( "fmt" "math" ) func main()

    { fmt.Printf("Now you have %g problems.", math.Sqrt(7)) }
  17. Resultados Múltiplos package main import "fmt" func swap(x, y string)

    (string, string) { return y, x } func main() { a, b := swap("hello", "world") fmt.Println(a, b) }
  18. Erros package main import "github.com/coderockr/nfe/transmitter" func main() { response, err

    := transmitter.transmit(nfe, xml) if err != nil { panic("Error ") //tratamento de erro qualquer } result, err := transmitter.saveData(response, xml) if err != nil { panic("Error ") //tratamento de erro qualquer } }
  19. Goroutines package main import ( "fmt" "time" ) func say(s

    string) { for i := 0; i < 5; i++ { time.Sleep(100 * time.Millisecond) fmt.Println(s) } } func main() { go say("world") say("hello") }
  20. Canais package main import "fmt" func sum(s []int, c chan

    int) { sum := 0 for _, v := range s { sum += v } c <- sum // send sum to c } func main() { s := []int{7, 2, 8, -9, 4, 0} c := make(chan int) go sum(s[:len(s)/2], c) go sum(s[len(s)/2:], c) x, y := <-c, <-c // receive from c fmt.Println(x, y, x+y) }
  21. Cross Compilation GOOS=darwin GOARCH=amd64 go build gorotines.go GOOS=windows GOARCH=amd64 go

    build gorotines.go GOOS=linux GOARCH=amd64 go build gorotines.go
  22. OO via composição e não herança, biblioteca padrão poderosa, etc.

  23. Quem está usando?

  24. Google, Basecamp, Globo.com, Canonical, DigitalOcean, Dropbox, Github, Heroku, Medium, Docker,

    MongoDB, Mozilla, Netflix, New Relic, New York Times, Resultados Digitais, Moip, Neoway, Walmart, Trybe, PicPay, etc https://github.com/golang/go/wiki/GoUsers
  25. Aplicações

  26. APIs

  27. Microservices

  28. IoT

  29. Databases

  30. CLIents

  31. Material de estudo

  32. Site oficial Tour Go, por onde começar? Livro: A Linguagem

    de Programação Go Curso Desenvolvimento Web com Go Awesome Go
  33. Contato elton@minetto.dev http://eltonminetto.dev http://twitter.com/eminetto