English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial Básico Golang

Sentenças de controle Golang

Função & Método Golang

Struct Golang

Fatia & Array Golang

String Golang

Ponteiro Golang

Interface Golang

Concorrência Golang

Exceções Golang (Error)

Outros itens Golang

Múltiplos Interfaces da Linguagem Go

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.