Programación Orientada a Objetos con Go (Introducción)

Juan Fernando Villadiego Madera
3 min readAug 21, 2021

--

Es Go realmente un lenguaje de programación orientada a objetos?

para contestar esto primero tenemos que definir que es programación orientada a objetos(POO). Como muchos sabrán programación orientada a objeto es un paradigma de programación que se basan en conceptos de clase y objetos con el fin de crear estructuras solidas y reutilizables al desarrollar software. Además de esto maneja conceptos como:

  • Encapsulamiento
  • Herencia
  • Polimorfismo
  • Abstracción

Entendiendo esto aquí es donde entra lo escabroso del asunto

Go no tiene clases…

Pero en cambio sí structs que aunque parezcan una clase no se comportan igual ni son lo mismo, lo bueno es que podemos adaptar ya que el struct solo contiene el estado y no el comportamiento pero podemos crear comportamientos para cambiar estos estados.

Go no tiene herencia…

Pero sí tiene composición, que es patrón que nos permite generar bases con piezas pequeñas, un buen ejemplo es pensarlo como una receta, que dependiendo de cada ingrediente se puede crear un nuevo plato. Ahora esto no significa que con go no se pueda lograr un comportamiento de herencia, en realidad si se puede.

y mientras la herencia se ve así

la composición se ve así

Volviendo al tema hay una última característica que quiero mencionar y es…

Encapsulamiento en Go

Se genera a nivel de paquete y se declara de manera implícita dependiendo de la primera letra con que nombramos una variable o función es minúscula o mayúscula.

Métodos públicos

Métodos privados

Conclusión

En mi opinión con go sí se puede trabajar con el paradigma de programación orientada a objetos, pero al estilo de go y no de la manera tradicional en la que muchos hemos aprendido.

--

--