freeCodeCamp/guide/spanish/go/go-structs/index.md

3.7 KiB

title localeTitle
Go Structs Ir Estructuras

Ir Estructuras

En Go, las estructuras se utilizan para almacenar datos y funciones relacionadas. Un ejemplo podría ser una estructura para representar a un usuario:

type User struct { 
    FirstName string 
    LastName  string 
    Email     string 
    Age       int 
 } 

Aquí podemos almacenar el nombre, el apellido, la dirección de correo electrónico y la edad de un usuario. El nombre de la propiedad va seguido del tipo de datos que queremos almacenar. Por ejemplo, la propiedad FirstName es una string mientras que la propiedad Age es un int .

Creando objetos

Para inicializar un nuevo objeto, podemos usar la sintaxis abreviada de Go para crear y asignar variables. Podemos pasar los datos en este punto o establecer los datos en un momento posterior:

func main() { 
    // Create a user and set both the first and last name properties 
    user1 := User{ 
        FirstName: "John", 
        LastName: "Wick", 
    } 
 
    // Now we have our user object, we can set the data like this 
    user1.Email = "john@wick.com" 
    user1.Age = 30 
 } 

Metodos de objeto

Go permite asignar métodos a estructuras. Esto permite agrupar las operaciones relevantes a los datos que afecta. En este ejemplo, escribiremos un método en la estructura de User para generar el nombre completo del usuario:

func (u User) FullName() string { 
    return strings.Join([]string{u.FirstName, u.LastName}, " ") 
 } 

Este método unirá el nombre y apellido del usuario con un espacio en el medio. Llamar al método podría verse así:

    println(user1.FullName()) 

Etiquetas de Struct

Las etiquetas Struct se utilizan para modificar cómo los codificadores manejan los datos. Por ejemplo, establecer los nombres de las claves al codificar a JSON:

type User struct { 
    FirstName string `json:"first_name"` 
    LastName  string `json:"last_name"` 
    Email     string `json:"email"` 
    Age       int    `json:"age"` 
 } 

Datos exportados

Las estructuras pueden contener propiedades exportadas (públicas) y no exportadas (privadas). Esto se establece por tener una primera letra mayúscula para exportar o una primera letra minúscula para no exportar. En este ejemplo, haremos que la propiedad del correo electrónico sea privada:

type User struct { 
    // Exported Data 
    FirstName string 
    LastName  string 
    Age       int 
 
    // Unexported Data 
    email     string 
 } 

Al hacer esto, el siguiente código arrojará un error en el momento de la compilación, ya que está intentando interactuar con una propiedad no exportada:

    user1.email = "john@wick.com" 

Esto también se aplica a los métodos:

// Exported method. This can be called from anywhere 
 func (u User) Email() { 
    return u.email 
 } 
 
 // Unexported method. This can only be called by other methods on this struct 
 func (u User) updateLoginCount { 
    // code to update login count... 
 } 

Modificar propiedades a través de métodos.

Para modificar los datos de un objeto desde uno de sus métodos, el objeto debe ser un puntero. Un ejemplo podría verse así:

`` `ir // SetEmail establece la dirección de correo electrónico del usuario func (u * User) SetEmail (cadena de correo electrónico) { u.email = email }

// correo electrónico de acceso func (u * Usuario) Correo electrónico () cadena { volver u.email }

func main () { // Creando el puntero user1 user1 = & User { Nombre: "Juan", Apellido: "Mecha", }

// Set the user's email address 
 user1.SetEmail("john@wick.com") 
 
 // Access and print the user's email address 
 println(user1.Email()) 

}