04 Curso Go – Orientado a Objetos

blog-image

Curso Go: Parte 4

Bienvenidos a una nueva entrega del curso, en este apartado, veremos estructuras, métodos y interfaces una explicación de cada una de ellas  y propondremos  pequeñas pruebas, para que seáis vosotros quienes valoréis si realmente estamos afianzando los conceptos expuestos en esta parte del curso.

En la anterior entrega, vimos como utilizar las funciones para poder crear aplicaciones mas complejas y modulares. Os recomiendo un pequeño repaso:

https://blog.ironchip.net/2019/04/10/03-curso-go-funciones

Estructuras

Creamos la estructura:

type name_struct struct {

    …

    …

}

(En el ejemplo lineas [9 : 14])

Métodos

Creamos una estructura Point de dos dimensiones X e Y. (lineas [9 : 12])

Creamos un método, en el que aumentando las posiciones tanto X como Y moveremos el punto.(Lineas [15 : 18])

En la linea 15 mediante el ” * “:

Para crear un puntero utilizamos el operador * antes del tipo de dato que necesitamos almacenar en esa dirección de memoria.

En la linea 21 mediante ” & “:

Para obtener la referencia o dirección de memoria de una variable, debemos anteponer a la variable el operador de dirección &.

Nueva estructura con funciones

En las lineas [18 : 38] vemos como en la función New trade, creamos un puntero en la estructura y validara la entrada.

func name(x string, y int, z float64, …) (*Struct, error) { … }

Mencionar que nil es lo que normalmente usamos como null.

En las siguientes lineas podemos observar como obtenemos la referencia a la estructura creada anteriormente.

ironchip := &Struct { x string, y int, z float64, … }

   return trade, nil

Prueba: Estructuras

Define una estructura cuadrada con dos campos: centro del punto y longitud, de tipo int. Añade dos métodos:

Move (dx int, dy int)

Area() int

También escribe NewSquare que obtiene x e y como centro del cuadrado y longitud y devuelve el puntero al cuadrado (Square) en un posible error:

NewSquare(x int, y int, length int) (*Square,error)

Interfaces

La siguiente sintaxis de declaración de una interfaz en Go:

Tipo_interfaz = “interface ”   

 “{” { Especificación_método “;” }

Como utilizarlas:

type  name_interfaz interface { … }

(Lineas 40 y 41).

Prueba: Interfaces

En este ejercicio vamos a implementar la interfaz io.Writer

Escribe una estructura llamada Capper con un campo para io.Writer y transforma todo lo escrito en mayúsculas.

type Capper struct {

wtr io.Writer

}func (c *Capper) Write(p [ ]byte) (n int, err error){

            //Your code goes here

}

Conclusión

Tras esta nueva entrega seremos capaces de utilizar interfaces, es la manera en que los objetos no relacionados se comuniquen entre si, podremos definir nuestros propios métodos y estructuras.

En la siguiente entrega aprenderemos todo lo relacionado al manejo de errores, tema muy importante.

Siguiente