Skip to content

Files

Latest commit

 

History

History

go

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

Go

Gerais

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


Estrutura padão de projeto

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".


Variáveis

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)
}


Funções

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
}


Pacotes

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


Go Mod

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)
}

Comandos

# 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