La programación orientada a objetos es un paradigma de programación que utiliza la idea de «objetos» para representar datos y métodos. Go no admite estrictamente la orientación a objetos, pero es un lenguaje ligero orientado a objetos. La programación orientada a objetos en Golang es diferente a la de otros lenguajes como C++ o Java debido a los factores que se mencionan a continuación:
1. Estructura
Go no admite tipos personalizados a través de clases sino estructuras. Las estructuras en Golang son tipos definidos por el usuario que contienen solo el estado y no el comportamiento. Las estructuras se pueden utilizar para representar un objeto complejo que comprende más de un par clave-valor. Podemos agregar funciones a la estructura que pueden agregarle comportamiento como se muestra a continuación:
Ejemplo:
// Golang program to illustrate the // concept of custom types package main import ( "fmt" ) // declaring a struct type Book struct{ // defining struct variables name string author string pages int } // function to print book details func (book Book) print_details(){ fmt.Printf("Book %s was written by %s.", book.name, book.author) fmt.Printf("\nIt contains %d pages.\n", book.pages) } // main function func main() { // declaring a struct instance book1 := Book{"Monster Blood", "R.L.Stine", 131} // printing details of book1 book1.print_details() // modifying book1 details book1.name = "Vampire Breath" book1.pages = 162 // printing modified book1 book1.print_details() }
Producción:
Book Monster Blood was written by R.L.Stine. It contains 131 pages. Book Vampire Breath was written by R.L.Stine. It contains 162 pages.
2. Encapsulación
Significa ocultar datos confidenciales de los usuarios. En Go, la encapsulación se implementa mediante la capitalización de campos, métodos y funciones que los hacen públicos. Cuando las estructuras, los campos o las funciones se hacen públicos, se exportan a nivel de paquete. Algunos ejemplos de miembros públicos y privados son:
package gfg // this function is public as // it begins with a capital letter func Print_this(){ // implementation } // public struct type Book struct{ // public field Name string // private field, only // available in gfg package author string }
3. Herencia
Cuando una clase adquiere las propiedades de su superclase, podemos decir que es herencia. Aquí, subclase/clase secundaria son los términos utilizados para la clase que adquiere propiedades. Para este, uno debe usar una estructura para lograr la herencia en Golang. Aquí, los usuarios tienen que componer usando estructuras para formar los otros objetos.
4. Interfaces
Las interfaces son tipos que tienen múltiples métodos. Los objetos que implementan todos los métodos de la interfaz implementan automáticamente la interfaz, es decir, las interfaces se satisfacen implícitamente. Al tratar objetos de diferentes tipos de manera consistente, siempre que se adhieran a una interfaz, Golang implementa el polimorfismo.
Ejemplo:
// Golang program to illustrate the // concept of interfaces package main import ( "fmt" ) // defining an interface type Sport interface{ // name of sport method sportName() string } // declaring a struct type Human struct{ // defining struct variables name string sport string } // function to print book details func (h Human) sportName() string{ // returning a string value return h.name + " plays " + h.sport + "." } // main function func main() { // declaring a struct instance human1 := Human{"Rahul", "chess"} // printing details of human1 fmt.Println(human1.sportName()) // declaring another struct instance human2 := Human{"Riya", "carrom"} // printing details of human2 fmt.Println(human2.sportName()) }
Producción:
Rahul plays chess. Riya plays carrom.
Publicación traducida automáticamente
Artículo escrito por vanigupta20024 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA