Aula 02 – Golang – Fiber – Ponteiros

Aula 02 – Golang – Fiber – Ponteiros

Voltar para página principal do blog

Todas as aulas desse curso

Aula 01                                               Aula 03

Fiber

Fiber

Pacote Programador Fullstack

Pacote Programador Fullstack

Se gostarem do conteúdo dêem um joinha 👍 na página do Código Fluente no
Facebook.

Sigam o Código Fluente no Instagram.

Código Fluente no Pinterest.

Meus links de afiliados:

Hostinger

Digital Ocean

One.com

Código da aula: Github

Melhore seu NETWORKING

Participe de comunidades de desenvolvedores:

Fiquem a vontade para me adicionar ao linkedin.

E também para me seguir no GITHUB.

Toti:

https://www.youtube.com/channel/UCUEtjLuDpcOvR3mIUr-viOA

Backing track / Play-along:

https://www.youtube.com/channel/UCT3TryVMqTqYBjf5g5WAHfA

Código Fluente

https://www.youtube.com/channel/UCgn-O-88XBAwdG9gUWkkb0w

Putz!

https://www.youtube.com/channel/UCZXop2-CECwyFYmHbhnAkAw

Link da documentação do Fiber:
https://docs.gofiber.io/

PIX para doações

PIX Nubank

PIX Nubank


Aula 02 – Golang – Fiber – Ponteiros

Nessa aula, vamos dá uma olhada superficial na linguagem Go para entender melhor o código.

No código que fizemos na aula passada temos:

c *fiber.Ctx

main.go


package main

import "github.com/gofiber/fiber/v2"

func main() {
    app := fiber.New()

    app.Get("/", func(c *fiber.Ctx) error {
        return c.SendString("Hello, World 👋!")
    })

    app.Listen(":3000")
}

O * significa que a variável c tem uma referência para um objeto fiber.Ctx em memória, ou seja, um contexto fiber.

Quem quiser outra explicação sobre ponteiros, tem na aula 18 do tutorial de Go aqui do código fluente, segue o link:

https://www.codigofluente.com.br/aula-18-tutorial-golang-ponteiros/

Vamos modificar o main.go só para ilustrar algumas coisas e exercitar a linguagem um pouco.

main.go


package main

import (
  "fmt"
)

func main() {
  var word string
  word = "Hello!"
  fmt.Printf(word)
}

Definimos uma variável word do tipo string, na linha seguinte, atribuímos a stringHello!” a variável word e depois imprime.

Podemos fazer isso de uma tacada só usando o := como mostrado abaixo:

main.go


package main

import (
  "fmt"
)

func main() {
  word := "Hello!"
  fmt.println(word)
}

Agora vamos criar a variável word como um ponteiro para um tipo string e tentar apontar para a string “Hello!“.

Modifique o main.go para ficar assim e veja o que acontece!

main.go


package main

import "fmt"

func main() {
  var word *string
  *word = "Hello!"
  fmt.Println(word)
}

Vai dá esse erro:

panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x0 addr=0x0 pc=0xdac5ba]

Toda vez que a gente cria uma variável ponteiro, ou seja, que aponta para algo, que referencia algum endereço de memória, temos que inicializá-la.

Ao invés de fazer assim:
var word *string

Temos que fazer assim:
var word *string = new(string)

main.go


package main

import "fmt"

func main() {
  var word *string = new(string)
  *word = "Hello!"
  fmt.Println(word) //O endereço de memória para o qual está apontando
  fmt.Println(*word) //O valor armazenado no endereço de memória
}

Saída: 

0xc000088220 (O endereço de memória para o qual está apontando)
Hello! (O valor armazenado no endereço de memória)

Outra variação do código.

main.go


package main

import "fmt"

func main() {
  word := "Hello!"
  ptr := &word
  fmt.Println(ptr) //O endereço de memória para o qual está apontando
  fmt.Println(*ptr) //O valor armazenado no endereço de memória
  fmt.Println(&word) //O endereço da variável word
}

Saída: 

0xc000088220
Hello!

Mais uma variação do código.

main.go


package main

import "fmt"

func main() {
  word := "Hello!"
  ptr := &word
  fmt.Println(ptr) //O endereço de memória para o qual está apontando
  fmt.Println(*ptr) //O valor armazenado no endereço de memória

  word = "World!"
  fmt.Println(ptr) //O endereço de memória para o qual está apontando
  fmt.Println(*ptr) //O valor armazenado no endereço de memória
}

Saída: 

0xc000088220
Hello!
0xc000088220
World! 

Voltando ao código original, vamos começar a refatorar ele.

Ele tá assim no momento.

main.go


package main

import "github.com/gofiber/fiber/v2"

func main() {
    app := fiber.New()

    app.Get("/", func(c *fiber.Ctx) error {
        return c.SendString("Hello, World 👋!")
    })

    app.Listen(":3000")
}

Vamos fazer a seguinte modificação, a gente vai transferir a linha:

return c.SendString(“Hello, World 👋!”) 

Para dentro de uma função chamada home() e passar ela por parâmetro para app.Get().

main.go


package main

import "github.com/gofiber/fiber/v2"

func main() {
  app := fiber.New()

  app.Get("/", home)

  app.Listen(":3000")
}

func home(c *fiber.Ctx) error {
  return c.SendString("Hello, World 👋!")
}

Acesse:

http://127.0.0.1:3000/

Por agora é só, na próxima aula a gente vai começar a construir uma API, integrando o Fiber com o banco MySQL.

Até lá.

Código da aula: Github

Voltar para página principal do blog

Todas as aulas desse curso

Aula 01                                               Aula 03

Se gostarem do conteúdo dêem um joinha 👍 na página do Código Fluente no
Facebook

Link do código fluente no Pinterest

Novamente deixo meus link de afiliados:

Hostinger

Digital Ocean

One.com

Obrigado, até a próxima e bons estudos. 😉

About The Author
-

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>