Um momento
Aula 60
Cursos / Aprenda Go / Golang (Curso de Programação)
Como Definir uma Interface na Linguagem Golang - Aula de Go

Summary

Aula de Go: Interfaces

Olá pessoal! Estamos de volta com mais uma aula de Go, e nesta aula, vamos aprender sobre interfaces.

O que é uma Interface?

Uma interface é um tipo que vamos definir como uma coleção de assinaturas de funções. Para ilustrar, vamos criar um tipo para quadrado e um tipo para círculo, ambos com a capacidade de calcular a área.

Definindo Estruturas

  1. Quadrado

    type Quadrado struct {
        Lado float64
    }
    
    • Em um quadrado, todos os lados são iguais. Definimos uma struct chamada Quadrado com a propriedade Lado do tipo float64.
    • A área do quadrado é calculada como:
      • Área = Lado × Lado
  2. Círculo

    type Circulo struct {
        Raio float64
    }
    
    • Para o círculo, definimos uma struct chamada Circulo com a propriedade Raio do tipo float64.
    • A área do círculo é calculada como:
      • Área = π × Raio²

Definindo a Interface

Vamos definir uma interface chamada Geometrica que requer a implementação do método Area:

type Geometrica interface {
    Area() float64
}
  • Essa interface possui apenas uma assinatura de função (Area) que retorna um valor float64.
  • Fica claro que a interface pode ter várias funções, podendo expandi-la no futuro para incluir, por exemplo, um método para calcular o perímetro.

Implementação Implícita

No Go, a interface é implementada implicitamente. Ou seja, não é necessário declarar explicitamente que Quadrado ou Circulo implementam a interface Geometrica. Basta que as structs implementem os métodos requeridos.

Conclusão

Até aqui, definimos a interface Geometrica e relacionamos como as structs Quadrado e Circulo podem implementar essa interface. Na próxima aula, vamos definir o método Area para ambas as formas geométricas.

Vejo você na próxima aula!

Video Transcript

Olá pessoal, estamos de volta com mais uma aula de Go. Nesta aula vamos aprender sobre interfaces. Então, interface é um tipo que a gente vai definir. A interface é uma coletânea de várias assinaturas de funções. Vamos ver aqui, vamos começar. Vamos supor que nós vamos fazer um tipo para o quadrado e um tipo para o círculo. O quadrado e o círculo nós podemos calcular a área desses dois, essas duas formas. Vamos definir uma interface para poder definir o método à área, que vai ser preciso para calcular o quadrado e o círculo. Vamos ver aqui como isso vai ser. Vamos supor que a gente tem dois tipos, vou chamar type, vou chamar quadrado. O quadrado vai ser uma struct, e dentro dessa struct quadrado vai ter um lado. Vou chamar a propriedade de lado que vai ser um float64. Vamos explicar aqui de novo. Criamos uma struct chamada quadrado para representar um quadrado. O quadrado tem todos os lados iguais, é como se fosse um rectangle, que os lados são todos iguais, então eu só chamei, em vez de falar comprimento e largura altura, eu chamei de lado. Essa propriedade tem tipo float64. Agora a gente sabe que o quadrado, a área do quadrado é igual ao lado do quadrado. Mesmo coisa que lado vezes o lado. Vamos definir o tipo para um círculo, vou chamar type círculo, vai ser uma struct também. Agora o círculo vai ter o que? Vai ter o raio, de tipo float64. Agora a área do círculo vai ser o que? Vai ser o pi, vezes o raio ao quadrado. Nesse caso é a mesma coisa que raio, vezes o raio. Então, em uma dessas formas quadrados círculos, podemos definir uma função, um método para calcular a área. Note que a área é um método comum a essas duas formas geométricas. Portanto, podemos definir uma interface que vai dizer, se você implementar essa interface aqui, você tem que fazer o seguinte, você tem que definir o método área. Vamos definir a nossa primeira interface. É só falar type, o nome da interface, vou chamar geométrico, ou geométrica, e o interface, que é a palavra chave, depois do nome. Então, nós definimos o interface, chamada geométrica. Dentro dessa interface, nós vamos definir várias assinaturas de funções, ou seja, métodos que são requeridos para que qualquer coisa, qualquer tipo, implemente a interface. Para você poder implementar a interface geométrica, você tem que definir a função área, e essa função retorna o valor flow de 64. Então, podemos definir essa simples interface com uma só assinatura. Note que não, eu só defini uma função, mas pode ter várias assinaturas. Por exemplo, depois nós poderíamos adicionar outro método para o perímetro, e assim por diante. Mas eu vou deixar assim só para começar simples. Vamos aqui ver, é capitular. Definimos uma interface chamada geométrica. As assinaturas, somente temos umas aqui. Essa função, área, que vai calcular a área da forma geométrica. O lance no gol é que a interface é implementada implicitamente. Isso é, você não precisa dizer tipo quadrado implementa geométrica, tipo círculo implementa geométrica. Normalmente, outras linguagens, a gente tem que falar implementes, por exemplo, quando definir o quadrado tem que falar implementes geométrica, mas não precisa falar no gol porque é implicito. Então, tem essa separação entre a interface e o tipo. Se você quiser implementar a interface, basta você adicionar métodos que correspondem a cada assinatura definida na interface, e ele vai automaticamente implementar aquela interface. Então, vamos dar um pauso aqui, antes da gente definir o método área para o quadrado e para o círculo. Então, te vejo na próxima aula.
Nenhum comentário ainda (loading...)
Nenhum comentário ainda (loading...)
Gostou da aula? 😆👍
Apoie nosso trabalho com uma doação: