English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Em Go, uma interface é uma coleção de assinaturas de métodos, também é um tipo, o que significa que você pode criar variáveis do tipo interface. Em Go, você pode criar múltiplas interfaces usando a sintaxe fornecida no programa:
type interface_name interface{ //assinatura de método }
Atenção:Em Go, não é permitido criar métodos com o mesmo nome em duas ou mais interfaces. Se tentar fazer isso, seu programa falhará. Vamos discutir múltiplos interfaces com um exemplo.
//conceito de múltiplos interfaces package main import "fmt" // interface 1 type AuthorDetails interface { details() } // interface 2 type AuthorArticles interface { articles() } // structura de dados type Author struct { a_name branch college ano int salary int particles int tarticles int } //Implementação do método da interface1 func (a author) details() { fmt.Printf("Autor: %s", a.a_name) fmt.Printf("\nDepartamento: %s através da data: %d", a.branch, a.year) fmt.Printf("\nNome da escola: %s", a.college) fmt.Printf("\nSalário: %d", a.salary) fmt.Printf("\nNúmero de artigos publicados: %d", a.particles) } // Implementação do método da interface 2 func (a author) articles() { pendingarticles := a.tarticles - a.particles fmt.Printf("\nArtigos pendentes: %d", pendingarticles) } // Valor principal func main() { //Atribuição de estrutura values := author{ nome: "Mickey", departamento: "Computer science", colégio: "XYZ", ano: 2012, salary: 50000, particles: 209, tarticles: 309, } // Acesso usando a interface1método var i1 AuthorDetails = values i1.details() //Acesso usando a interface2método var i2 AuthorArticles = values i2.articles() }
Saída:
Autor: Mickey Departamento: Computer science através da data: 2012 Nome da escola: XYZ Salário: 50000 Número de artigos publicados: 209 Artigos pendentes: 100
Explicação de uso:Como mostrado no exemplo acima, temos duas interfaces com métodos, namely details() e Articles(). Aqui, o método details() fornece informações detalhadas básicas do autor, enquanto o método articles() fornece os artigos pendentes do autor.
Há ainda uma estrutura chamada Autor (Author), que contém um conjunto de variáveis, cujos valores são usados nas interfaces. Nos métodos principais, atribuímos os valores das variáveis existentes na estrutura do autor, para que possam ser usados nas interfaces e criamos variáveis do tipo interface para acessarAuthorDetailseAuthorArticlesMétodos da Interface.