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