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

Tutorial básico de Golang

Estructuras de control de Golang

Funciones & Métodos de Golang

Estructura de datos de Golang

Cortes & Arreglos de Golang

Cadenas (String) de Golang

Punteros de Golang

Interfaz de Golang

Concurrencia de Golang

Excepciones (Error) de Golang

Otros artículos de Golang

Múltiples interfaces del lenguaje Go

En el lenguaje Go, una interfaz es una colección de firmas de métodos, también es un tipo, lo que significa que puede crear variables de tipo interfaz. En el lenguaje Go, puede crear múltiples interfaces utilizando la sintaxis dada en el programa:

type interface_name interface{
//firma del método
}

nota:En el lenguaje Go, no se permite crear métodos con el mismo nombre en dos o más interfaces. Si intenta hacer esto, su programa se caerá. Vamos a discutir múltiples interfaces con un ejemplo.

//concepto de múltiples interfaces
package main
import "fmt"
// interfaz 1
type AuthorDetails interface {
    details()
}
// interfaz 2
type AuthorArticles interface {
    articles()
}
// estructura de datos
type author struct {
    a_name string
    branch string
    college string
    year      int
    salary    int
    particles int
    tarticles int
}
//Implementar método de interfaz1
func (a author) details() {
    fmt.Printf("Autor: %s", a.a_name)
    fmt.Printf("\nDepartamento: %s Fecha: %d", a.branch, a.year)
    fmt.Printf("\nNombre de la universidad: %s", a.college)
    fmt.Printf("\nSalario: %d", a.salary)
    fmt.Printf("\nNúmero de artículos publicados: %d", a.particles)
}
// Implementar método de interfaz 2
func (a author) articles() {
    pendingarticles := a.tarticles - a.particles
    fmt.Printf("\nArtículos pendientes: %d", pendingarticles)
}
// Valor principal
func main() {
    //Asignación de estructura
    values := author{
        a_name:    "Mickey",
        branch:    "Computer science",
        college:   "XYZ",
        year:      2012,
        salary:    50000,
        particles: 209,
        tarticles: 309,
    }
    // Acceder utilizando la interfaz1método
    var i1 AuthorDetails = values
    i1.details()
    //Acceder utilizando la interfaz2método
    var i2 AuthorArticles = values
    i2.articles()
}

Salida:

Autor: Mickey
Departamento: Computer science Fecha: 2012
Nombre de la universidad: XYZ
Salario: 50000
Número de artículos publicados: 209
Artículos pendientes: 100

Explicación de uso:Como se muestra en el ejemplo anterior, tenemos dos interfaces con métodos, es decir, details() y Articles(). Aquí, el método details() proporciona los detalles básicos del autor, mientras que el método articles() proporciona los artículos pendientes del autor.

Además, hay una estructura denominada Autor (Author), que contiene un conjunto de variables, cuyos valores se utilizan en la interfaz. En los métodos principales, asignamos los valores de las variables existentes en la estructura del autor para que se utilicen en la interfaz y creamos variables de tipo interfaz para accederAuthorDetailsyAuthorArticlesMétodos de la interfaz.