SlideShare uma empresa Scribd logo
1 de 30
Baixar para ler offline
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!

Mais conteúdo relacionado

Mais de Eduardo Cesar

Refatoração e uma vida saudável para o desenvolvedor e para sua aplicação
Refatoração e uma vida saudável para o desenvolvedor e para sua aplicaçãoRefatoração e uma vida saudável para o desenvolvedor e para sua aplicação
Refatoração e uma vida saudável para o desenvolvedor e para sua aplicaçãoEduardo Cesar
 
Explorando mecanismos autenticacao na web
Explorando mecanismos autenticacao na webExplorando mecanismos autenticacao na web
Explorando mecanismos autenticacao na webEduardo Cesar
 
Manipulando JWT em apis Laravel
Manipulando JWT em apis LaravelManipulando JWT em apis Laravel
Manipulando JWT em apis LaravelEduardo Cesar
 
Porque escolhemos Laravel: um ponto de vista além do técnico
Porque escolhemos Laravel: um ponto de vista além do técnicoPorque escolhemos Laravel: um ponto de vista além do técnico
Porque escolhemos Laravel: um ponto de vista além do técnicoEduardo Cesar
 
Do monolito ao microservico
Do monolito ao microservicoDo monolito ao microservico
Do monolito ao microservicoEduardo Cesar
 
Interagindo com web services RPC, SOAP e REST utilizando PHP
Interagindo com web services RPC, SOAP e REST utilizando PHPInteragindo com web services RPC, SOAP e REST utilizando PHP
Interagindo com web services RPC, SOAP e REST utilizando PHPEduardo Cesar
 
Uma abordagem sobre arquiteturas de software Rest e Micro services
Uma abordagem sobre arquiteturas de software Rest e Micro servicesUma abordagem sobre arquiteturas de software Rest e Micro services
Uma abordagem sobre arquiteturas de software Rest e Micro servicesEduardo Cesar
 

Mais de Eduardo Cesar (7)

Refatoração e uma vida saudável para o desenvolvedor e para sua aplicação
Refatoração e uma vida saudável para o desenvolvedor e para sua aplicaçãoRefatoração e uma vida saudável para o desenvolvedor e para sua aplicação
Refatoração e uma vida saudável para o desenvolvedor e para sua aplicação
 
Explorando mecanismos autenticacao na web
Explorando mecanismos autenticacao na webExplorando mecanismos autenticacao na web
Explorando mecanismos autenticacao na web
 
Manipulando JWT em apis Laravel
Manipulando JWT em apis LaravelManipulando JWT em apis Laravel
Manipulando JWT em apis Laravel
 
Porque escolhemos Laravel: um ponto de vista além do técnico
Porque escolhemos Laravel: um ponto de vista além do técnicoPorque escolhemos Laravel: um ponto de vista além do técnico
Porque escolhemos Laravel: um ponto de vista além do técnico
 
Do monolito ao microservico
Do monolito ao microservicoDo monolito ao microservico
Do monolito ao microservico
 
Interagindo com web services RPC, SOAP e REST utilizando PHP
Interagindo com web services RPC, SOAP e REST utilizando PHPInteragindo com web services RPC, SOAP e REST utilizando PHP
Interagindo com web services RPC, SOAP e REST utilizando PHP
 
Uma abordagem sobre arquiteturas de software Rest e Micro services
Uma abordagem sobre arquiteturas de software Rest e Micro servicesUma abordagem sobre arquiteturas de software Rest e Micro services
Uma abordagem sobre arquiteturas de software Rest e Micro services
 

Desbabravando linguagem GO