Go y Golang

Ejemplos e introducción a los objetos y clases en Go

Introducción

Go, o Golang es un lenguaje de programación compilado. No tiene una forma de definir una clase (así como estamos acostumbrados por ejemplo en Java) pero sí podemos crear objetos.

¿Cómo declarar una clase en Go?

No declaramos una clase, declaramos un tipo. Por ejemplo, si yo quisiera declarar la clase Mascota, pondría esto:

See the gist on github.

Declaramos variables de distintos tipos dentro de nuestro tipo.

¿Cómo crear un objeto en Go?

Tomando el ejemplo de arriba, podemos crear un objeto de la siguiente forma:

See the gist on github.

Podemos imprimirlo, se verá esto:

Instanciar un objeto

Podemos instanciar o crear un objeto de 2 maneras. En la primera, mandamos en orden los valores del objeto. Así:

See the gist on github.

Pero no recomiendo esa forma, ya que no es expresiva y si el orden de los valores cambia dentro del tipo, tendremos que cambiar también las llamadas a la creación del mismo.

Recomiendo esto:

See the gist on github.

Ahí definimos cuál variable estamos pasando. Además, el orden no importa (en este caso las mandé en el mismo orden pero fue coincidencia)

Métodos dentro de una clase

También podemos declarar métodos o funciones. Programemos la función ladrar, en donde imprimimos un mensaje y accedemos a algunas propiedades de nuestra mascota.

See the gist on github.

Vemos claramente que no definimos la función dentro de nuestro tipo, sino que la adjuntamos a un apuntador del mismo. Si yo ejecuto el programa, sale esto:

Métodos de clases en Go

 

Modificando y obteniendo propiedades

Podemos modificarlas directamente, como se ve a continuación:

See the gist on github.

Modificar variable en objeto

Igualmente obtenerlas:

See the gist on github.

Con este resultado:

Obtener propiedad de un objeto

Pero no es recomendado obtenerlas así. Eso sería dejar nuestras variables públicas, y generaría  (en la mayoría de los casos) muchos errores.

Setters y getters

Podemos crear getters y setters para obtener y establecer propiedades. Veamos por ejemplo el setter y getter de edad.

Para establecer su edad definimos otra función, igualmente para obtenerla.

See the gist on github.

El resultado al ejecutarlo sigue siendo el mismo, pero ahora ya hemos implementado getters y setters.

Setter en Go

Objetos dentro de otras clases

Para terminar el post y no hacerlo muy largo, veamos que podemos tener objetos dentro de objetos.

Pongamos a nuestra mascota un dueño. Un dueño es del tipo Persona.

See the gist on github.

Al ejecutar, el resultado es este:

Objetos dentro de objetos en Go

Con eso terminamos por hoy.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Ver comentarios

Compartir
Publicado por
parzibyte

Entradas recientes

JavaScript (lado del cliente): leer pixeles de imagen

En ocasiones es necesario leer los pixeles y colores de una imagen con JavaScript del…

4 días hace

PHP y JavaScript: llenar select con AJAX

Siguiendo con los tutoriales de listas desplegables o select con JavaScript, vamos a ver cómo…

4 días hace

Imprimir PDF generado con HTML

Hoy vamos a ver programar la impresión de un PDF generado a partir de HTML…

5 días hace

JavaScript: llenar select con arreglo

En este tutorial básico de JavaScript con HTML vamos a ver cómo llenar una lista…

2 semanas hace

Imprimir PDF a partir de URL

En este artículo se presenta una guía para imprimir un PDF a partir de una…

2 semanas hace

Imprimir PDF a partir de base64

En este post voy a enseñarte cómo imprimir un PDF a partir de su representación…

2 semanas hace

Esta web usa cookies.