View on GitHub

gopy

Go para Pythonistas

Olá, 🌎!

Primeiro exemplo

Todo arquivo-fonte em Go deve ser salvo na codificação UTF-8. Isso permite usar caracteres Unicode em qualquer lugar que a sintaxe permita: strings, comentários e identificadores.

package main

import "fmt"

func main() {
	fmt.Println("Olá, 🌎!")

Como executar um programa em Go

Go playground

Visite https://play.golang.org/. Copie e cole o código e use os botões na página.

Go run

Vá até o diretório …/gopy/exemplos/hello/ e execute o seguinte comando:

$ go run ola.go
Olá, 🌎!

Isso compila o programa em um diretório temporário, e o executa. Nenhum arquivo é gerado no diretório atual.

Go build

O comando go build compila o programa e gera um binário executável. Por padrão, o executável tem o mesmo nome do diretório onde está o programa:

$ go build
$ ls
hello  ola.go
$ ./hello
Olá, 🌎!

Este executável não depende de mais nada para rodar (stand-alone executable). Por padrão, as dependências externas são incorporadas ao binário (statically linked binary).

Use a sua IDE

Qualquer IDE corretamente configurada deve ser capaz de executar o programa e mostrar a saída em uma área de mensagens.

No VS Code, a tecla [F5] roda o programa, se o depurador delve estiver instalado.

Olá, linha por linha

package main  // ➊

import "fmt"  // ➋

func main() {  // ➌
	fmt.Println("Olá, 🌎!")  // ➍
}

➊ Declaração do nome do pacote.

➋ Importamos o pacote fmt da biblioteca padrão.

➌ Declaramos a função main, que será invocada quando este program for executado. A indentação se faz com um tab por nível. Não discuta.

➍ Invocamos a função fmt.Println. Nomes definidos em outros devem ser prefixado com o nome do pacote. Por isso o prefixo fmt nesta linha.

Declaração package

Para programas executáveis, o nome pacote deve ser main. Bibliotecas devem usar um nome igual à última parte do caminho até seu código-fonte. Por exemplo, os arquivos do pacote strset, disponível em “github.com/standupdev/strset”, começam com esta declaração:

package strset

Declaração import

É comum precisar importar mais de um pacote. A sintaxe convencional é colocar os nomes dos pacotes entre parêntesis, em linhas separadas:

import (
    "encoding/json"
    "encoding/xml"
    "fmt"
    "io/ioutil"
    "net/http"
    "time"

    "github.com/standupdev/strset"

    "appengine"
    "appengine/urlfetch"
)

🔍 Existe uma sintaxe chamada dot import que corresponde ao from pacote import * em Python, mas ela é usada raramente, principalmente para testes e DSLs. Detalhes: especificação e discussão.

Convenções

🔍 As ferramentas go fmt e goimports ajudam a organizar os imports, mas elas têm comportamentos distintos, como explicado nesse issue.