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

Tutoriales básicos de Golang

Sentencias de control de Golang

Funciones y métodos de Golang

Estructuras de Golang

Cortes y arreglos de Golang

Cadenas (String) de Golang

Punteros de Golang

Interfaces de Golang

Concurrencia de Golang

Excepciones (Error) de Golang

Otras herramientas de Golang

Estructuras anidadas de Go

EstructuraEn Golang es un tipo definido por el usuario, que permite crear un conjunto de elementos de diferentes tipos en una unidad. Cualquier entidad real que tenga un conjunto de atributos o campos puede representarse como una estructura. El lenguaje Go permite estructuras anidadas. Una estructura es un campo de otra estructura, denominada estructura anidada. En otras palabras, una estructura dentro de otra estructura se llama estructura anidada.

Sintaxis:

type struct_name_1 struct{}}
  // Campos
} 
type struct_name_2 struct{}}
  variable_name  struct_name_1
}

Vamos a discutir este concepto con un ejemplo:

//Estructura anidada 
package main 
  
import "fmt"
  
//Crear estructura
type Author struct { 
    name  string 
    branch string 
    year int
} 
  
//Crear estructura anidada
type HR struct { 
  
    //Estructura de campos
    details Author 
} 
  
func main() { 
  
    // Inicializar campos de estructura 
    result := HR{       
        details: Author{"Sona", "ECE", 2013, 
    } 
  
    //Imprimir valores de salida
    fmt.Println("\nDetalles del autor") 
    fmt.Println(result) 
}

Salida:

Detalles del autor
{{Sona ECE 2013}}

Ejemplo de estructura anidada2:

package main 
  
import "fmt"
  
//Crear estructura 
type Student struct { 
    name  string 
    branch string 
    year int
} 
  
//Crear estructura anidada
type Teacher struct { 
    name  string 
    subject string 
    exp int
    details Student 
} 
  
func main() { 
  
    //Inicializar campos de estructura
    result := Teacher{ 
        name:  "Suman", 
        subject: "Java", 
        exp:     5, 
        details: Student{"Bongo", "CSE", 2, 
    } 
   
    fmt.Println("Detalles detallados del maestro") 
    fmt.Println("Nombre del maestro: ", result.name) 
    fmt.Println("Materia: ", result.subject) 
    fmt.Println("Experiencia: ", result.exp) 
  
    fmt.Println("\nDetalles del estudiante") 
    fmt.Println("Nombre del estudiante: ", result.details.name) 
    fmt.Println("Nombre del departamento del estudiante: ", result.details.branch) 
    fmt.Println("Edad: ", result.details.year) 
}

Salida:

Detalles detallados del maestro
Nombre del maestro:  Suman
Materia:  Java
Experiencia:  5
Detalles del estudiante
Nombre del estudiante:  Bongo
Nombre del departamento del estudiante:  CSE
Edad:  2