Exercício de digitação: Programação em linguagem Go

feche e comece a digitar

Datilografia é significativa na programação. Você será mais eficiente ao usar técnicas de digitação rápida para escrever código na linguagem de programação Go.

Vamos aprender mais sobre a linguagem Go e a datilografia ao programar em Go.

Programação em Go e datilografia

Programar em Go e praticar digitação se relacionam naturalmente. Go possui regras de sintaxe rígidas e caracteres especiais que podem ser difíceis de digitar rapidamente. Um erro em uma chave ou em um operador resulta imediatamente em erro de compilação.

O que é característico da sintaxe de Go?

Go é uma linguagem compilada (inglês: compiled language) com estilo limpo e minimalista. O código começa sempre com uma declaração package. As importações são agrupadas em blocos. Funções são declaradas com a palavra-chave func e usam chaves {}. A indentação não é opcional - Go impõe formatação com go fmt. Os pontos e vírgulas não são escritos, mas o compilador os insere automaticamente no final das linhas.

package main

import "fmt"

func main() {
 fmt.Println("Hello, Go")
}

Caracteres importantes

No código Go, aparecem frequentemente chaves {}, parênteses (), colchetes [], aspas ", backticks `, o operador de atribuição curta := e o operador de canal <-.

Variáveis e declarações

Go diferencia a declaração com var da atribuição curta :=. Este operador combina dois símbolos e é usado o tempo todo.

var count int = 10
message := "typed correctly"

Estruturas de controle

Go usa if, for e switch. Não existe while. Operadores de comparação como ==, !=, <, > e o operador ++ devem ser digitados corretamente.

for i := 0; i < 5; i++ {
 if i%2 == 0 {
 fmt.Println("even")
 }
}

Funções e múltiplos retornos

As funções em Go podem retornar múltiplos valores. Isso exige o uso frequente de vírgulas em listas de retorno e em atribuições.

func divide(a, b int) (int, error) {
 if b == 0 {
 return 0, fmt.Errorf("division by zero")
 }
 return a/b, nil
}

result, err := divide(10, 2)

Slices, maps e literais

Colchetes [] e chaves {} são usados o tempo todo. Maps usam dois-pontos : entre chave e valor.

nums := []int{1, 2, 3}
scores := map[string]int{"alice": 5, "bob": 7}

Structs e métodos

O tipo struct agrupa dados. Métodos são declarados com um receiver e chamados com o ponto ..

type User struct {
 Name string
}

func (u User) Greet() string {
 return "Hello " + u.Name
}

u := User{Name: "A"}
fmt.Println(u.Greet())

Interfaces

As interfaces são satisfeitas implicitamente, sem uma palavra-chave como implements.

type Stringer interface {
 String() string
}

Concorrência e canais

O operador de canal <- é uma característica própria de Go. Ele serve tanto para envio (ch <- valor) quanto para recebimento (valor := <-ch).

ch := make(chan int)
go func() { ch <- 42 }()
value := <-ch

Strings e runas

Aspas duplas definem strings normais, backticks definem raw strings e aspas simples são usadas para runas.

text := "normal string"
raw := `path\to\file`
r := 'a'

Indentação e formatação

Go impõe um estilo uniforme. A posição de chaves e quebras de linha é importante. Um erro comum é inserir Enter logo após return.

Resumo

Os caracteres mais importantes em Go são: chaves {}, parênteses (), colchetes [], o operador := e a seta de canal <-. Praticar esses símbolos é essencial para escrever código rápido e preciso.