DEV Community 👩‍💻👨‍💻

Cover image for Primeiros passos com Golang!
Will Koller
Will Koller

Posted on • Updated on

Primeiros passos com Golang!

Como instalar golang no Linux Ubuntu

Iremos usar docker para rodar o golang na versão 1.12.0-alpine3.9

Criando Dockerfile com imagem golang:1.12.0-alpine3.9

Criando a pasta

mkdir first-steps-golang

Acessando a pasta

cd first-steps-golang

Criando Dockerfile

touch Dockerfile

FROM golang:1.12.0-alpine3.9 as builder

WORKDIR /build

COPY go.mod .

RUN go mod download

COPY . .

RUN go build -o main . 

FROM scratch

WORKDIR /build

COPY --from=builder /build .

CMD [ "./main" ]
Enter fullscreen mode Exit fullscreen mode

Criando o arquivo go.mod

touch go.mod

Na raiz do projeto terá um arquivo go.mod com esse conteúdo:

module calc

go 1.12
Enter fullscreen mode Exit fullscreen mode

Em seguida iremos criar a pasta calc

mkdir calc

E criaremos o arquivo de calc em go

cd calc && touch calc.go

Dentro do arquivo cal.go, criamos uma func de divisão.

package calc seria referente ao pacote de calc

package calc

func Division(a, b int) int {
    return a / b
}
Enter fullscreen mode Exit fullscreen mode

Iremos criar o arquivo main.go para executar o cálculo

touch main.go

Dentro do arquivo main.go

package main seria referente ao pacote main

Iremos importar o calc e fmt

package main

import (
    "calc/calc"
    "fmt"
)

func main() {
    var num1 int = 4
    num2 := 2
    result := calc.Division(num1, num2)

    fmt.Println(result)
}

Enter fullscreen mode Exit fullscreen mode

Em seguida iremos fazer o build da imagem em go, na raiz do projeto aonde o Dockerfile esta.

docker build -t williamkoller/first-steps-golang .

Rodaremos a imagem gerado com esse comando

docker run -t williamkoller/first-steps-golang

Resultado gerado
Image description

Agora iremos trabalhar com erros em Golang

No arquivo calc.go

Iremos adicionar uma tratativa de erro

Podemos notar que importamos o erros do golang e no returno estamos usando o nil (como se fosse um ponteiro).

package calc

import "errors"

func Division(a, b int) (int, error) {
    if b == 0 {
        return 0, errors.New("denominator cannot be zero")
    }

    return (a / b), nil
}
Enter fullscreen mode Exit fullscreen mode

No arquivo main.go

Passa a ser assim:

package main

import (
    "calc/calc"
    "fmt"
)

func main() {
    var num1 int = 4
    num2 := 0
    result, err := calc.Division(num1, num2)

    if err != nil {
        fmt.Println("Error:", err)
        return
    }
    fmt.Println(result)
}
Enter fullscreen mode Exit fullscreen mode

Iremos fazer o build da imagem novamente para ter essa nova versão de código

docker build -t williamkoller/first-steps-golang .

Em seguida rodar a nova imagem

docker run -t williamkoller/first-steps-golang

Com esse resultado:

Image description

Esse é o resultado gerado com docker e golang

Espero ter ajudado!

Top comments (4)

Collapse
_uillaz profile image
William Oliveira

Irmão, acho que, pra um primeiro passo, talvez seria melhor utilizar o compilador via terminal mesmo. Evitando a complexidade com o Docker. Depois você puxa outro artigo colocando o Docker (ou, no caso, cria um outro com esse mesmo assunto, mas sem o Docker e linka os dois textos pra gente <3).

Parabéns pelo conteúdo, mano!

Collapse
williamkoller profile image
Will Koller Author

Fala irmão, muito obrigado pelas palavras.

fiz um tutorial utilizando o compilador do go segue:

dev.to/williamkoller/como-instalar...

Collapse
jeanmamelo profile image
Jean Melo

Conteúdo muito bacana, parabéns, William!

Collapse
williamkoller profile image
Will Koller Author

muito obrigado Jean!!

🌚 Browsing with dark mode makes you a better developer.

It's a scientific fact.