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

Tutorial básico do Golang

Controle de fluxo do Golang

Função & Método do Golang

Estrutura do Golang

Fatia & Array do Golang

String do Golang

Ponteiro do Golang

Interface do Golang

Concorrência do Golang

Exceções do Golang (Error)

Outros itens do Golang

Estrutura de linguagem Go (struct)

A estrutura (struct) no Golang é um tipo definido pelo usuário, que permite agrupar itens de tipos diferentes/Compondo em um único tipo. Qualquer coisa no mundo real que possua um conjunto de atributos/Os objetos de campo podem ser representados como uma estrutura. Este conceito é frequentemente comparado com a classe em programação orientada a objetos. Pode ser chamado de classe leve que não suporta herança mas suporta composição.

Por exemplo, um endereço possui name, street, city, state, Pincode. Assim, combine essas três propriedades em uma estruturaEndereçoé significativo.

Declarar a estrutura:

 type Endereço struct {
      name string 
      street string
      city string
      state string
      CódigoPostal int
}

Neste exemplo,typeA palavra-chave introduz um novo tipo. A seguir, o nome do tipo (Endereço)e a palavra-chavestructPara explicar a estrutura que estamos definindo. Esta estrutura contém uma lista de campos dentro dos colchetes. Cada campo tem um nome e um tipo.

Atenção:Também podemos combinar campos de tipos idênticos para torná-los compactos, conforme exemplo a seguir:}}

type Endereço struct {
    name, rua, cidade, estado string
    CódigoPostal int
}

Definir estrutura:Sintaxe de declaração da estrutura:

var a Endereço

O código acima cria umTipo de EndereçoAs variáveis, por padrão, são configuradas como nulo. Para estruturas, nulo significa que todos os campos são configurados como seus valores nulos correspondentes. Portanto, os campos name, street, city, state são configurados como “”, e CódigoPostal como 0.

Você também podeUsar literals de estrutura para inicializar variáveis do tipo de estruturaComo mostrado abaixo:

var a = Endereço{"Akshay", "PremNagar", "Dehradun", "Uttarakhand", 252636}

Atenção:

Sempre passar os valores dos campos na ordem em que foram declarados na estrutura. Da mesma forma, você não pode inicializar apenas um subconjunto de campos usando a sintaxe mencionada acima.

O Go também suportaNome:valorSintaxe, usada para inicializar estruturas (ao usar esta sintaxe, a ordem dos campos não importa). Além disso, isso permite que você inicialize apenas uma subconjunto de campos. Todos os campos não inicializados são configurados como seus valores nulos correspondentes.

Por exemplo:

var a = Endereço{"Akshay", "PremNagar", "Dehradun", "Uttarakhand", 252636}
package main 
  
import "fmt"
  
//Definir tipo de estrutura
type Endereço struct { 
    Nome    string 
    cidade    string 
    CódigoPostal int
} 
  
func main() { 
  
        //Declarar uma variável do tipo “struct”
        //Inicializar todos os campos da struct
        //Seu valor é nulo
    var a Endereço  
    fmt.Println(a) 
  
        //Declaração e inicialização
        // A struct usa textos estruturais
    a1 := Endereço{"Akshay", "PremNagar", "Dehradun", 3623572} 
  
    fmt.Println("Endereço",1: ", a1) 
  
        //Ao nomear campos
        //Inicializar uma estrutura
    a2 := Endereço{Name: "Anikaa", cidade: "Ballia",CódigoPostal: 277001} 
  
    fmt.Println("Endereço",2: ", a2) 
  
        //Os campos não inicializados são configurados como
        //Eles correspondem aos valores nulos
    a3 := Endereço{Name: "Delhi"} 
    fmt.Println("Endereço",3: ", a3) 
}

Saída:

{  0}
Endereço1:  {Akshay Dehradun} 3623572}
Endereço2:  {Anikaa Ballia} 277001}
Endereço3:  {Delhi  0}

Como acessar os campos da estrutura?

Para acessarDa estruturaOs campos individuais, você deve usar o ponto(.)Operadores.

package main 
  
import "fmt"
  
//Definir estrutura 
type Carro struct { 
    Nome, Modelo, Cor string 
    PesoEmKg         float64 
} 
  
func main() { 
    c := Car{Name: "Ferrari", Modelo: "GTC4, Cor: "Vermelho", PesoEmKg: 1920} 
  
        //Acessar campo de estrutura
        //Usar o operador de ponto
    fmt.Println("Nome do Carro: ", c.Name) 
    fmt.Println("Cor do Carro: ", c.Color) 
        //Atribuir novo valor
        //Ponteiro para um campo de estrutura
    c.Color = "Preto"
      
    //Exibir resultado
    fmt.Println("Carro: ", c) 
}

Saída:

Nome do Carro:  Ferrari
Cor do Carro:  Vermelho
Carro:  {Ferrari GTC4 Preto 1920}

Ponteiro para a estrutura

Os ponteiros no Golang são variáveis usadas para armazenar endereços de memória de outras variáveis. Você também pode criar um ponteiro para uma estrutura, como no exemplo a seguir:

// Ponteiro para a estrutura
package main 
  
import "fmt"
  
// Definir uma estrutura
type Employee struct { 
    firstName, lastName string 
    age, salary int
} 
  
func main() { 
  
        //Passar o endereço da variável struct
        // emp8
    emp8 := &Employee{"Sam", "Anderson", 55, 6000} 
  
        //* emp8,
        // emp8o campo firstName da estrutura
    fmt.Println("Primeiro Nome:", (*emp8).firstName) 
    fmt.Println("Idade:", (*emp8).age) 
}

Saída:

Primeiro Nome: Sam
Idade: 55

Golang nos fornece a opção de usar emp8* emp8

//Ponteiro para a estrutura
package main 
  
import "fmt"
  
//Definir uma estrutura
type Employee struct { 
    firstName, lastName string 
    age, salary         int
} 
  
func main() { 
  
    //Obter um ponteiro para a estrutura
    emp8 := &Employee{"Sam", "Anderson", 55, 6000} 
  
        // emp8.firstName é usado para acessar
        //campo firstName
    fmt.Println("Primeiro Nome: ", emp8.firstName) 
    fmt.Println("Idade: ", emp8.age) 
}

Saída:

Primeiro Nome:  Sam
Idade:  55