go env # Exibe as variáveis de ambiente.
go run main.go # Executa arquivo go.
go build main.go # Compila aplicação.
go install # Instala em "~/go/bin".
# Instala pacote.
# A mesma é instalada em: ~/go/src/github.com/google/uuid
go get github.com/google/uuid
# Altera o OS de destino.
GOOS=windows go build main.go
cd ~/go/src/
mkdir -p github.com/melchisedech333/hello-go
cd github.com/melchisedech333/hello-go
Arquivo: main.go
package main
import "fmt"
func main () {
fmt.Println("IHS s2")
}
go build main.go # Compila aplicação.
go install # Instala aplicação em ~/go/bin
# Na instalação é pego sempre o
# nome da pasta, no caso "hello-go".
package main
import "fmt"
// Declaração com tipagem forte.
var a string
func main () {
// Atribuição de valor.
a = "IHS"
// Infere o tipo e atribui o valor.
// Se infere apenas uma vez, depois usa-se atribuição.
b := "Salvator"
fmt.Println(a)
fmt.Println(b)
// Tipos variados.
c := 10
d := "Iesus"
e := 3.14
f := true
g := `In principio
erat
Verbum
`
// Valores.
fmt.Printf("%v \n", c)
fmt.Printf("%v \n", d)
fmt.Printf("%v \n", e)
fmt.Printf("%v \n", f)
fmt.Printf("%v \n", g)
// Tipos.
fmt.Printf("%T \n", c)
fmt.Printf("%T \n", d)
fmt.Printf("%T \n", e)
fmt.Printf("%T \n", f)
fmt.Printf("%T \n", g)
}
package main
import "fmt"
func main() {
result := soma(10, 20)
fmt.Printf("%T, %v\n", result, result)
}
func soma(a int, b int) int {
return a + b
}
Para um exemplo mais elaborado, veja o diretório src/github.com/melchisedech333/pacote.
Exemplo simples:
// File: main.go
package main
import (
"fmt"
"github.com/melchisedech333/pacote/utils"
)
func main() {
utils.Version()
fmt.Printf("10 + 10 = %v\n", utils.Sum(10, 20))
}
// File: utils/funcs.go
package utils
import "fmt"
// Funções exportáveis.
func Version() {
fmt.Println("Utils version 1.0")
}
func Sum (a int, b int) int {
return a + b
}
go run main.go
Projeto em: go-mod/*
Conceitos:
- Dependência direta: quando estamos usando exatamente aquele pacote.
- Dependência indireta: quando precisamos daquele pacote, para fazer outro funcionar.
# Inicializa o arquivo de módulos para o projeto em questão
# E define o módulo que vamos usar.
go mod init github.com/melchisedech333/uuid
Sempre no final do arquivo go.mod gerado serão adicionadas as dependências instaladas.
# Instala uma dependência.
go install github.com/google/uuid
# Deprecado.
go get github.com/google/uuid@latest
// File: main.go
package main
import (
"fmt"
"github.com/google/uuid"
)
func main(){
uuid := uuid.New()
fmt.Printf("UUID: %v\n", uuid)
}
# Corrige as dependências, adicionando as que estou
# utilizando no código, e removendo as que não estou usando.
# Importante rodar ele sempre que for subir alguma aplicação
# para ambientes.
go mod tidy
# Mostra uma espécie de gráfico das dependências.
go mod graph
# Gera uma pasta vendor no projeto em questão, com todas as
# dependências utilizadas no mesmo.
go mod vendor