segunda-feira, 28 de janeiro de 2019

Programando em Go (Golang) - Interface

Em golang uma interface é uma coleção de assinaturas de métodos. Em golango para se utilizar um intreface basta apenas implementar os métodos contidas na mesma.

Sintaxe:

type nome_interface interface{
  assinatura_metodo_1
  assinatura_metodo_2
  ...
  assinatura_metodo_n
}

Onde:

nome_interface - Nome da interface
assinatura_metodo_1 - Assinatura de um método.
assinatura_metodo_2 - Assinatura de um método.
assinatura_metodo_N - Assinatura de um método.

Exemplo:


package main

import ( "fmt"
         "strings")


type impressao interface{
    maiusculo() string
    minusculo() string
}


type usuario struct{
 nome, sobrenome string
}

type cidade struct{
 nome, estado string
}


func (c cidade) maiusculo() string{
  retorno:=strings.ToUpper(c.nome)+" - "+strings.ToUpper(c.estado)
  return retorno
}


func (c cidade) minusculo() string{
  retorno:=strings.ToLower(c.nome)+" - "+strings.ToLower(c.estado)
  return retorno
}


func (u usuario) maiusculo() string{
  retorno:=strings.ToUpper(u.nome)+" "+strings.ToUpper(u.sobrenome)
  return retorno
}


func (u usuario) minusculo() string{
  retorno:=strings.ToLower(u.nome)+" "+strings.ToLower(u.sobrenome)
  return retorno
}

func main(){
 cidade:= cidade{nome:"Lorena", estado:"São Paulo"}
 usuario:= usuario{nome:"Robson", sobrenome:"Gomes"}

 fmt.Println("\nDados da Usuario:\n")

 fmt.Println(" ",usuario.maiusculo())
 fmt.Println(" ",usuario.minusculo())

  fmt.Println("\nDados da Cidade:\n")


 fmt.Println(" ",cidade.maiusculo())
 fmt.Println(" ",cidade.minusculo())
 
}


Como foi possível ver acima foi criado um programa que conta com a interface  impressao:

type impressao interface{
    maiusculo() string
    minusculo() string
}


Nela é definida duas assinaturas de métodos simples, sendo que ambas retornam uma string. Logo os dois métodos são implementados pela estrutura usuario e cidade.

func (c cidade) maiusculo() string{
  retorno:=strings.ToUpper(c.nome)+" - "+strings.ToUpper(c.estado)
  return retorno
}


func (c cidade) minusculo() string{
  retorno:=strings.ToLower(c.nome)+" - "+strings.ToLower(c.estado)
  return retorno
}


func (u usuario) maiusculo() string{
  retorno:=strings.ToUpper(u.nome)+" "+strings.ToUpper(u.sobrenome)
  return retorno
}


func (u usuario) minusculo() string{
  retorno:=strings.ToLower(u.nome)+" "+strings.ToLower(u.sobrenome)
  return retorno
}



E a chamada as mesma é as mesmas são utilizadas no método main.

func main(){
 cidade:= cidade{nome:"Lorena", estado:"São Paulo"}
 usuario:= usuario{nome:"Robson", sobrenome:"Gomes"}

 fmt.Println("\nDados da Usuario:\n")

 fmt.Println(" ",usuario.maiusculo())
 fmt.Println(" ",usuario.minusculo())

  fmt.Println("\nDados da Cidade:\n")


 fmt.Println(" ",cidade.maiusculo())
 fmt.Println(" ",cidade.minusculo())
 
}



Abaixo é possível ver o resultado do método do programa acima:




Menu Principal

Nenhum comentário:

Postar um comentário