Aula 21 – Tutorial Golang – Interface

Aula 21 – Tutorial Golang – Interface

Tutorial Golang - Interface

Tutorial Golang – Interface

Página principal do blog

Todas as aulas desse curso

Aula 20                        Aula 22

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

Melhore seu NETWORKING

https://digitalinnovation.one/

Participe de comunidades de desenvolvedores:

Fiquem a vontade para me adicionar ao linkedin.

E também para me seguir no https://github.com/toticavalcanti.

Código final da aula:

https://github.com/toticavalcanti

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

PIX para doações

PIX Nubank

PIX Nubank

Se quiser copiar o código do PIX:

00020126580014BR.GOV.BCB.PIX013643c5f950-535b-4658-b91f-1f1d135fe4105204000053039865802BR5925Antonio Cavalcante de Pau6009SAO PAULO61080540900062070503***6304946B

Aula 21 – Tutorial Golang – Interface

Interface

Uma interface é uma estrutura/sintaxe de programação que permite ao programador impor certas propriedades em um objeto (classe).

São coleções nomeadas de assinaturas de métodos.

O código abaixo é uma interface básica para formas geométricas, onde declaramos que ela irá ter dois métodos, o que calcula a área e o que calcula o perímetro, e isso independe da geometria, podendo ser um retângulo ou um círculo, no caso do exemplo mostrado.


type geometry interface {
  area() float64
  perim() float64
}

Para esse exemplo, implementaremos essa interface com os tipos rect e circle.


type rect struct {
  width, height float64
}
type circle struct {
  radius float64
}

Para implementar uma interface em Go, basta implementar todos os métodos da interface.

Métodos do Retângulo

Aqui a implementação dos métodos que calcula a área e o que calcula o perímetro de um retângulo, ou seja, faz o cálculo da geometria.


func (r rect) area() float64 {
  return r.width * r.height
}
func (r rect) perim() float64 {
  return 2 * r.width + 2 * r.height

Métodos do Círculo

Aqui a implementação dos métodos que calcula a área e o que calcula o perímetro de um círculo.


func (c circle) area() float64 {
    return math.Pi * c.radius * c.radius
}
func (c circle) perim() float64 {
    return 2 * math.Pi * c.radius
}

Chamando métodos da interface

Se uma variável tiver um tipo de interface, podemos chamar métodos que estão na interface nomeada.

Aqui está uma função de medida genérica aproveitando isso para trabalhar em qualquer geometria.


func measure(g geometry) {
  fmt.Println(g)
  fmt.Println("Área: ", g.area())
  fmt.Println("Perímetro: ", g.perim())
}

Os tipos de estrutura circle e rect implementam a interface geometry para que possamos usar instâncias dessas estruturas como argumentos para medir.


func main() {
  r := rect{width: 3, height: 4}
  c := circle{radius: 5}
  fmt.Print("Medidas do retângulo(largura e altura): ")
  measure(r)
  fmt.Print("Medida do círculo(raio): ")
  measure(c)
}

Código completo


package main

import (
 "fmt"
 "math"
)

type geometry interface {
  area() float64
  perim() float64
}

type rect struct {
  width, height float64
}
type circle struct {
 radius float64
}

func (r rect) area() float64 {
  return r.width * r.height
}
func (r rect) perim() float64 {
  return 2*r.width + 2*r.height
}

func (c circle) area() float64 {
  return math.Pi * c.radius * c.radius
}
func (c circle) perim() float64 {
  return 2 * math.Pi * c.radius
}

func measure(g geometry) {
  fmt.Println(g)
  fmt.Println("Área: ", g.area())
  fmt.Println("Perímetro: ", g.perim())
}

func main() {
  r := rect{width: 3, height: 4}
  c := circle{radius: 5}
  fmt.Print("Medidas do retângulo(largura e altura): ")
  measure(r)
  fmt.Print("Medida do círculo(raio): ")
  measure(c)
}

E pra executar é só entrar na pasta onde tá o arquivo interfaces.go


go run interfaces.go

Saída:

Medidas do retângulo(largura e altura): {3 4}
Área: 12
Perímetro: 14
Medida do círculo(raio): {5}
Área: 78.53981633974483
Perímetro: 31.41592653589793

É isso pessoal, fico por aqui, na próxima a gente vai ver embedding.

Até mais. 🙂

Página principal do blog

Todas as aulas desse curso

Aula 20                        Aula 22

página do Código Fluente no
Facebook

Esse é o link do código fluente no Pinterest

Meus links de afiliados:

Hostinger

Digital Ocean

One.com

Obrigado 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>