- Autor
- Nome
- Nelson Silva
- Social
Introdução
Em Go, um "struct" é uma coleção composta de campos que permite agrupar variáveis de diferentes tipos. Os structs são extremamente úteis para definir e criar tipos de dados personalizados, proporcionando uma maneira organizada de representar entidades e seus atributos.
- Definindo e Inicializando structs
- Acessando Campos do struct
- Structs Aninhados
- Ponteiros para structs
- Métodos e structs
Definindo e Inicializando structs
Para definir um struct, usamos a palavra-chave type
seguida pelo nome do struct e a palavra-chave struct
:
type Pessoa struct {
Nome string
Idade int
Email string
}
Para inicializar um struct, podemos atribuir valores aos seus campos utilizando a sintaxe de chaves:
p := Pessoa{"Nelson", 28, "[email protected]"}
Ou utilizando os nomes dos campos:
p := Pessoa{
Nome: "Nelson",
Idade: 28,
Email: "[email protected]",
}
Acessando Campos do struct
Para acessar um campo específico do struct, utilizamos o operador .
:
nome := p.Nome // "Nelson"
idade := p.Idade // 28
Structs Aninhados
É possível ter structs dentro de outros structs, uma característica que pode ser útil para representar relações hierárquicas ou complexas:
type Endereco struct {
Rua string
Cidade string
Pais string
}
type Pessoa struct {
Nome string
Idade int
Local Endereco
}
Ponteiros para structs
Assim como outras variáveis em Go, structs também podem ser referenciados usando ponteiros:
ponteiroParaPessoa := &p
ponteiroParaPessoa.Nome = "Pedro" // Altera o nome no struct original
Métodos e structs
Em Go, podemos definir métodos específicos para structs, permitindo que operações específicas sejam realizadas com ou sobre esses structs:
func (p Pessoa) Apresentar() string {
return "Olá, meu nome é " + p.Nome
}
mensagem := p.Apresentar() // "Olá, meu nome é Nelson"
Conclusão
Os structs em Go são ferramentas poderosas e flexíveis que nos permitem criar representações claras e organizadas de entidades e seus atributos. Dominar structs é fundamental para qualquer programador Go que deseje criar aplicações robustas e bem estruturadas.