Programação em Go: Goroutines e Tratamento de Erros
8 Questions
0 Views

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

O que caracteriza as gorrotinas em Go?

  • Tarefas que são executadas em paralelo
  • Threads pesados que são gerenciados pelo sistema operacional
  • Funções que são executadas sequencialmente
  • Threads leves que são gerenciados pelo runtime de Go (correct)
  • Como você começaria uma nova gorrotina em Go?

  • Go func() {...}() (correct)
  • gorotine func() {...}()
  • Thread func() {...}()
  • Nova func() {...}()
  • O que é uma struct em Go?

  • Uma função que pode ser executada concorrentemente
  • Uma coleção de campos que podem ser de diferentes tipos (correct)
  • Um canal de comunicação
  • Um erro personalizado
  • Como você acessa um campo de uma struct em Go?

    <p>Usando a notação de ponto: <code>struct.field</code></p> Signup and view all the answers

    Como você maneja erros em Go?

    <p>Usando erros como valores</p> Signup and view all the answers

    O que é concorrência em Go?

    <p>A habilidade de um programa fazer várias coisas ao mesmo tempo</p> Signup and view all the answers

    Como você cria um canal de comunicação em Go?

    <p>Usando a palavra-chave <code>chan</code></p> Signup and view all the answers

    Qual é a ferramenta usada para formatar o código Go?

    <p>Gofmt</p> Signup and view all the answers

    Study Notes

    Goroutines

    • Lightweight threads that run concurrently with the main thread
    • Scheduled by the Go runtime, not the OS
    • Goroutines are very cheap in terms of memory and startup time
    • Can be thought of as "functions that can run concurrently with other functions"
    • Use the go keyword to start a new goroutine: go func() { ... }()

    Error Handling

    • Errors are values in Go, not exceptions
    • Use the err type to represent an error
    • Use the return statement to return an error from a function
    • Use the defer statement to handle errors in a function
    • Multiple return values can be used to return an error and a result
    • Error types can be customized using structs and the Error() method

    Structs

    • A collection of fields that can be of different types
    • Fields are accessed using the dot notation: struct.field
    • Structs are values, not references
    • Can be used to create custom types
    • Can have methods attached to them using the func (s *Struct) Method() syntax
    • Fields can have tags, which are used by the encoding/json package to serialize and deserialize structs

    Concurrency

    • Concurrency is the ability of a program to do multiple things at the same time
    • In Go, concurrency is achieved using goroutines and channels
    • Channels are a way to communicate between goroutines
    • Use the chan keyword to create a channel: ch := make(chan int)
    • Use the &lt;- operator to send and receive values on a channel: ch &lt;- 1 and x := &lt;-ch
    • Channels are safe for concurrent use by multiple goroutines
    • Use the select statement to handle multiple channels concurrently

    Gofmt

    • A tool that formats Go code according to the official Go style
    • Formats code to be consistent and readable
    • Can be used to enforce a consistent coding style across a project
    • Use the gofmt command to format a file or directory: gofmt file.go or gofmt .
    • Can be integrated into an editor or IDE to format code automatically

    Goroutines

    • São threads leves que executam concorrentemente com a thread principal
    • São escalonados pelo runtime do Go, e não pelo SO
    • Goroutines são muito baratos em termos de memória e tempo de inicialização
    • Podem ser pensadas como "funções que podem executar concorrentemente com outras funções"
    • Usa-se a palavra-chave go para iniciar uma nova goroutine: go func() {...}()

    Tratamento de Erros

    • Erros são valores no Go, não exceções
    • Usa-se o tipo err para representar um erro
    • Usa-se a declaração return para retornar um erro de uma função
    • Usa-se a declaração defer para lidar com erros em uma função
    • Valores de retorno múltiplos podem ser usados para retornar um erro e um resultado
    • Tipos de erro podem ser personalizados usando structs e o método Error()

    Structs

    • É uma coleção de campos que podem ser de diferentes tipos
    • Campos são acessados usando a notação de ponto: struct.campo
    • Structs são valores, não referências
    • Podem ser usados para criar tipos personalizados
    • Podem ter métodos anexados a eles usando a sintaxe func (s *Struct) Método()
    • Campos podem ter tags, que são usadas pelo pacote encoding/json para serializar e deserializar structs

    Concorrência

    • É a capacidade de um programa de fazer várias coisas ao mesmo tempo
    • No Go, a concorrência é alcançada usando goroutines e canais
    • Canais são uma forma de comunicação entre goroutines
    • Usa-se a palavra-chave chan para criar um canal: ch := make(chan int)
    • Canais são usados para enviar e receber valores entre goroutines

    Studying That Suits You

    Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

    Quiz Team

    Description

    Aprenda os conceitos básicos de Goroutines e Tratamento de Erros em programação em Go. Entenda como trabalhar com threads leves e como lidar com erros em Go.

    More Like This

    Use Quizgecko on...
    Browser
    Browser