Blog de programación, errores, soluciones

Chose Language:
comments
Author: Admin/Publisher |finished | checked

Estructuras en GO (golang -struct)

Muchas personas piensan en las estructuras struct como si fueran las clases en go, pero esto no es correcto, tal como lo dice en la documentación del las estructuras son una colección de campos.

Sintaxis
type struct_name struct {
	member member_data_type
	member member_data_type
}

Esto si nos ponemos a pensar es más parecido a un array asociativo de PHP que otra cosa pero no son arrays, las estructuras pueden contener variables de muchos tipos diferentes de datos a diferencia de estos.

También con ellas podemos hacer cosas parecidas a las que hacíamos con las clases, como por ejemplo usar un método, veamos el ejemplo que da el tour del lenguaje pero modificado

Ejemplo
package main

import "fmt"

type Local struct {
	vertexX int
	vertexY int
	name string
}

func main(){
	r := Local{1, 2,"stadium"}
	fmt.Println(r)
	onlyname(r)
	r.printname()
}
func onlyname(x Local){
	fmt.Println(x.name)
}
func (l *Local) printname(){
	fmt.Println(l.name)
}

El código anterior funciona correctamente, ¿esto quiere decir que las estructuras son clases?

Respuesta: No

Métodos

Los métodos de Go los podemos usar gracias que el nombre de la estructura es named type, no puedes usar métodos en punteros e interfaces, lo cual es algo lógico para mí, no se puede apuntar al puntero del puntero. Para ver más sobre métodos vea funciones en go

Estructura anónima

¿de existir existen, pero realmente tiene sentido crear una estructura anónima? Recordad que los métodos lo podemos usar porque son named types no porque sea una estructura.

Sintaxis
varname := struct {
    x string
    y string
}{
    x:    "string1",
    y:   "string2",
}

tenga en cuenta que estas estructuras no pueden ser referenciadas y, por tanto, estarán aisladas.

Category: go
Something wrong? If you found an error or mistake in the content you can contact me on Twitter | @luisg2249_luis.
Last 4 post in same category

Comments