Programación orientada a objetos en GoLang

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *