Las interfaces de idioma de Go son diferentes de otros idiomas. En el lenguaje Go, la interfaz es un tipo personalizado que se utiliza para especificar un conjunto de una o más firmas de métodos y la interfaz es abstracta, por lo que no puede crear una instancia de la interfaz. Pero se le permite crear una variable de un tipo de interfaz y esta variable se puede asignar con un valor de tipo concreto que tenga los métodos que requiere la interfaz. O, en otras palabras, la interfaz es una colección de métodos y también es un tipo personalizado. Para leer más sobre las interfaces, consulte el artículo Interfaz en Golang
Hay dos estructuras y una interfaz. Una estructura es para los detalles del curso gfg y otra estructura es para los detalles del concurso. Una interfaz tiene el método get_name que devolverá los nombres del curso y el concurso. Con la ayuda de la interfaz, accederemos a la variable de la estructura ya que no queremos acceder a la variable de la estructura desde el exterior.
Ejemplo 1: Este programa tomará 2 entradas.
Go
// Golang program to access the interface fields package main import "fmt" // Declare course structure type Course struct { name string } // Declare contest structure type Contest struct { name string } // Declare interface type Name interface { get_name() string } // get_name function for course func (a Course) get_name() string { return a.name } // get_name function for contest func (b Contest) get_name() string { return b.name } // Compare course and contest name. // Name is interface type func name_compare(course, contest Name) bool { return contest.get_name() == course.get_name(); } func main() { var course_name, contest_name string // Get the course name from user fmt.Println("Enter course name: ") fmt.Scan(&course_name) // Get the contest's name from user fmt.Println("Enter contest name: ") fmt.Scan(&contest_name) // Create structure of course course := Course{course_name} // Create structure of contest contest := Contest{contest_name} fmt.Print("Is same subjects in course and contest: ") // Call interface function to compare names fmt.Print(name_compare(course, contest)) }
Producción:
Enter course name: DBMS Enter contest name: DBMS Is same subjects in course and contest: true
Ejemplo 2: Este programa tomará 2 entradas.
Go
// Golang program to access the interface fields package main import "fmt" // Declare courseprice structure type Courseprice struct { price int } // Declare contestprice structure type Couponprice struct { price int } // Declare interface type Price interface { get_price() int } // get_price function for Courseprice func (a Courseprice) get_price() int { return a.price } // get_price function for Coupon price func (b Couponprice) get_price() int { return b.price } // Compare courseprice and Couponprice. // Price is interface type func price_compare(courseprice, Couponprice Price) bool { if courseprice.get_price() <= Couponprice.get_price() { return true } else { return false } } func main() { var courseprice, Couponprice int // Get the courseprice from user fmt.Println("Enter course price: ") fmt.Scan(&courseprice) // Get the Couponprice from user fmt.Println("Enter Coupon Price: ") fmt.Scan(&Couponprice) // Create structure of courseprice course := Courseprice{courseprice} // Create structure of Couponprice Coupon := Couponprice{Couponprice} fmt.Print("Is the course is free: ") // Call interface function to compare price fmt.Print(price_compare(course, Coupon)) }
Producción:
Enter course price: 1000 Enter Coupon Price: 700 Is the course is free: false
Publicación traducida automáticamente
Artículo escrito por cse1604310056 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA