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

Tutorial Básico Golang

Comandos de Controle Golang

Funções & Métodos Golang

Estruturas Golang

Fatias & Arrays Golang

Strings Golang (String)

Ponteiros Golang

Interfaces Golang

Concorrência Golang

Exceções Golang (Error)

Outros itens Golang

Estrutura Aninhada do Go

EstruturaEm Golang é um tipo definido pelo usuário, que permite criar um conjunto de elementos de diferentes tipos em um único bloco. Qualquer entidade real que tenha um conjunto de atributos ou campos pode ser representada como uma estrutura. O Go permite estruturas aninhadas. Uma estrutura é um campo de outra estrutura, chamada de estrutura aninhada. Em outras palavras, uma estrutura dentro de outra estrutura é chamada de estrutura aninhada.

Sintaxe:

type struct_name_1 struct{}}
  // Fields
} 
type struct_name_2 struct{}}
  nome_da_variável  nome_da_estrutura_1
}

Vamos discutir esse conceito com um exemplo:

//Estrutura aninhada 
package main 
  
import "fmt"
  
//Criar estrutura
type Author struct { 
    name   string 
    branch string 
    year   int
} 
  
//Criar estrutura aninhada
type HR struct { 
  
    //Estrutura de campos
    details Author 
} 
  
func main() { 
  
    // Inicializar campos da estrutura 
    result := HR{       
        details: Author{"Sona", "ECE", 2013, 
    } 
  
    //Imprimir valor de saída
    fmt.Println("\nDetalhes do autor") 
    fmt.Println(result) 
}

Saída:

Detalhes do autor
{{Sona ECE 2013}}

Exemplo de estrutura aninhada2:

package main 
  
import "fmt"
  
//Criar estrutura 
type Student struct { 
    name   string 
    branch string 
    year   int
} 
  
//Criar estrutura aninhada
type Teacher struct { 
    name    string 
    subject string 
    exp     int
    details Student 
} 
  
func main() { 
  
    //Inicializar campos da estrutura
    result := Teacher{ 
        name:    "Suman", 
        subject: "Java", 
        exp:     5, 
        details: Student{"Bongo", "CSE", 2, 
    } 
   
    fmt.Println("Detalhes do professor") 
    fmt.Println("Nome do professor: ", result.name) 
    fmt.Println("Disciplina: ", result.subject) 
    fmt.Println("Experiência: ", result.exp) 
  
    fmt.Println("\nDetalhes do estudante") 
    fmt.Println("Nome do estudante: ", result.details.name) 
    fmt.Println("Nome do departamento do estudante: ", result.details.branch) 
    fmt.Println("Idade: ", result.details.year) 
}

Saída:

Detalhes do professor
Nome do professor:  Suman
Disciplina:  Java
Experiência:  5
Detalhes do estudante
Nome do estudante:  Bongo
Nome do departamento do estudante:  CSE
Idade:  2