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