DESBRAVANDO
GOLANG
TECH COFFEE - ZARP
EDUARDO
&&
FELIPE
A linguagem
Modularização poderosa
Sintaxe muito simples
Concorrência
func main {
go f(“1”)
}
Ambiente e Execução
main.go
package main
func main(){
//
}
go run main.go
Pacotes
TIPOS
&&
Variáveis
var nome-da-variavel tipo-da-variavel
var nome string = “GoLang”
//Declarando variável com indução de tipo
nome-da-variavel := valor (independente do tipo)
nome := “GoLang”
Funções
func main() {
dizerOlaMundoGo()
}
func dizerOlaMundoGo(){
fmt.Println("Olá mundo GoLang")
}
func main() {
mensagem := dizerOlaMundoGo()
fmt.Println(mensagem)
}
func dizerOlaMundoGo() string{
return "Olá mundo GoLang"
}
func main() {
mensagem := dizerOlaMundoGo()
fmt.Println(mensagem)
}
func dizerOlaMundoGo() string{
return "Olá mundo GoLang"
}
Múltiplos retornos
func GetDsn() (string, string, string, string) {
err := godotenv.Load()
if err != nil {
log.Fatal("Error loading .env file")
}
host := os.Getenv("DB_HOST")
user := os.Getenv("DB_USER")
pass := os.Getenv("DB_PASS")
database := os.Getenv("DB_NAME")
return user, pass, host, database
}
func Connect() {
user, pass, host, database := GetDsn()
//Para ignorar basta usar _
user, pass, host, _ := GetDsn()
}
Variadic
func sum(nums ...int) {
fmt.Print(nums, " ")
total := 0
for _, num := range nums {
total += num
}
fmt.Println(total)
}
func sum(nums ...int) {}
func main() {
sum(1, 2)
sum(1, 2, 3)
nums := []int{1, 2, 3, 4}
sum(nums...)
}
//Output
[1 2] 3
[1 2 3] 6
[1 2 3 4] 10
STRUCTS
type DescontoPessoaFisica struct {
value float64
discount float64
}
type DescontoPessoaJuridica struct {
value float64
discount float64
}
INTERFACES
type Desconto interface {
Calcular() float64
}
type DescontoPessoaFisica struct {}
type DescontoPessoaJuridica struct {}
func (d DescontoPessoaFisica) Calcular() float64 {
//Logic for calculate discount
}
func (d DescontoPessoaJuridica) Calcular() float64 {
//Logic for calculate discount
}
func descontar(d Desconto) float64 {
return d.Calcular()
}
func main() {
descontoPessoaF := DescontoPessoaFisica{value: 50, discount: 2}
descontoPessoaJ := DescontoPessoaJuridica{value: 80, discount: 10}
fmt.Println(descontar(descontoPessoaF))
fmt.Println(descontar(descontoPessoaJ))
}
TRATANDO ERROS
func f1(arg int) (int, error) {
if arg == 42 {
return -1, errors.New("não pode trabalhar com 42")
}
return arg + 3, nil
}
func main() {
if r, e := f1(i); e != nil {
fmt.Println("f1 falhou:", e)
} else {
fmt.Println("f1 funcionou:", r)
}
}
OBRIGADO A TODOS!

Desbabravando linguagem GO