Publicado em

struct em Go

Partilhar:

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

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.

Happy coding!