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