English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriales básicos de Golang

Instrucciones de control de Golang

Funciones & Métodos de Golang

Estructuras de Golang

Cortes & Arreglos de Golang

Cadenas (String) de Golang

Punteros de Golang

Interfaces de Golang

Concurrencia de Golang

Excepciones (Error) de Golang

Otros aspectos de Golang

Estructura de lenguaje Go (struct)

El struct (estructura) en Golang es un tipo definido por el usuario, que permite agrupar elementos de tipos diferentes/Combinado en un solo tipo. Cualquier entidad en el mundo real que tenga un conjunto de atributos/La entidad de los campos puede representarse como una estructura. Este concepto se compara a menudo con las clases en la programación orientada a objetos. Puede llamarse una clase ligera que no admite herencia pero admite composición.

Por ejemplo, una dirección tiene name, street, city, state, Pincode. Como se muestra a continuación, estos tres atributos se combinan en una estructuraDirecciónTiene sentido.

Declarar la estructura:

 type Address struct {
      name string 
      street string
      city string
      state string
      Pincode int
}

En el ejemplo siguiente,typeLa palabra clave introduce un nuevo tipo. Después de esto, sigue el nombre del tipo (Dirección)y la palabra clavestruct,Para explicar la estructura que estamos definiendo. Esta estructura contiene una lista de campos dentro de los corchetes. Cada campo tiene un nombre y un tipo.

Nota:También podemos hacer que los campos de tipos idénticos sean compactos combinándolos, como se muestra en el siguiente ejemplo:

type Address struct {
    name, street, city, state string
    Pincode int
}

Definir la estructura:Sintaxis para declarar la estructura:

var a Address

El código anterior crea unaTipo AddressLas variables, por defecto se establecen en cero. Para las estructuras, cero significa que todos los campos se establecen en sus valores de cero correspondientes. Por lo tanto, los campos name, street, city, state se establecen en "", y Pincode se establece en 0.

También puedeInicializar variables de tipo estructura utilizando expresiones literales de estructuraComo se muestra a continuación:

var a = Address{"Akshay", "PremNagar", "Dehradun", "Uttarakhand", 252636}

Nota:

Siempre pasar los valores de los campos en el orden en que se declararon en la estructura. Del mismo modo, no puede inicializar un subconjunto de campos utilizando la sintaxis anterior.

Go también admiteNombre: valorSintaxis, utilizada para inicializar estructuras (al usar esta sintaxis, el orden de los campos no es importante). Además, esto solo permite inicializar un subconjunto de campos. Todos los campos no inicializados se establecen en su valor de cero correspondiente.

Por ejemplo:

var a = Address{"Akshay", "PremNagar", "Dehradun", "Uttarakhand", 252636}
package main 
  
import "fmt"
  
//Definir el tipo de estructura
type Address struct { 
    Name string 
    city string 
    Pincode int
} 
  
func main() { 
  
        //Declarar una variable de tipo "struct"
        //Inicializar todos los campos de struct
        //Su valor es cero
    var a Address  
    fmt.Println(a) 
  
        //Declaración e inicialización
        // La estructura utiliza la notación de estructura
    a1 := Address{"Akshay", "Dehradun", 3623572} 
  
    fmt.Println("Dirección1: "1) 
  
        //Al nombrar campos
        //Inicializar una estructura
    a2 := Dirección{Name: "Anikaa", city: "Ballia", Pincode: 277001} 
  
    fmt.Println("Dirección2: "2) 
  
        //Los campos no inicializados se establecen en
        //Sus valores de cero
    a3 := Dirección{Name: "Delhi"} 
    fmt.Println("Dirección3: "3) 
}

Salida:

{ 0}
Dirección1: {Akshay Dehradun} 3623572}
Dirección2: {Anikaa Ballia} 277001}
Dirección3: {Delhi 0}

¿Cómo acceder a los campos de la estructura?

Para accederLa estructuraCada campo, debe usar el punto(.)Operadores.

package main 
  
import "fmt"
  
//Definir la estructura 
type Car struct { 
    Nombre, Modelo, Color string 
    PesoEnKg float64 
} 
  
func main() { 
    c := Car{Name: "Ferrari", Model: "GTC4, Color: "Rojo", PesoEnKg: 1920} 
  
        //Acceder a los campos de la estructura
        //Usar el operador de punto
    fmt.Println("Nombre del coche: ", c.Name) 
    fmt.Println("Color del coche: ", c.Color) 
        //Asignar nuevo valor
        //Puntero a un campo de estructura
    c.Color = "Negro"
      
    //Mostrar resultado
    fmt.Println("Coche: ", c) 
}

Salida:

Nombre del coche:  Ferrari
Color del coche:  Rojo
Coche:  {Ferrari GTC4 Negro 1920}

Puntero a la estructura

Un puntero en Golang es una variable que se utiliza para almacenar la dirección de memoria de otra variable. También puede crear un puntero a una estructura, como se muestra en el siguiente ejemplo:

// Puntero a la estructura
package main 
  
import "fmt"
  
// Definir una estructura
type Employee struct { 
    firstName, lastName string 
    age, salary int
} 
  
func main() { 
  
        //Pasar la dirección de la variable struct
        // emp8
    emp8 := &Employee{"Sam", "Anderson", 55, 6000} 
  
        //* emp8,
        // emp8El campo firstName de la estructura
    fmt.Println("Nombre:", (*emp8).firstName) 
    fmt.Println("Edad:", (*emp8).age) 
}

Salida:

Nombre: Sam
Edad: 55

Golang nos proporciona la opción de usar emp8.firstName en lugar de desreferenciar explícitamente (* emp8

//Puntero a la estructura
package main 
  
import "fmt"
  
//Definir una estructura
type Employee struct { 
    firstName, lastName string 
    age, salary int
} 
  
func main() { 
  
    //Obtener un puntero a la estructura
    emp8 := &Employee{"Sam", "Anderson", 55, 6000} 
  
        // emp8Se utiliza .firstName para acceder
        //Campo firstName
    fmt.Println("Nombre: ", emp8.firstName) 
    fmt.Println("Edad: ", emp8.age) 
}

Salida:

Nombre:  Sam
Edad:  55