Go por Exemplo: Estruturas

Estruturas do Go são coleções de campos digitados. Eles são úteis para agrupar dados em conjunto para formar registros.

package main
import "fmt"

Este tipo de estrutura pessoa possui os campos nome e idade.

type pessoa struct {
    nome string
    idade  int
}
func main() {

Esta sintaxe cria uma nova estrutura.

    fmt.Println(person{"Bob", 20})

Você pode nomear campos ao inicializar uma estrutura.

    fmt.Println(person{name: "Alice", idade: 30})

Campos omitidos serão de valor-zero.

    fmt.Println(pessoa{nome: "Fred"})

Um prefixo & rende um ponteiro para a estrutura.

    fmt.Println(&pessoa{nome: "Ann", idade: 40})

Acessa campos de estrutura com um ponto.

    s := pessoa{nome: "Sean", idade: 50}
    fmt.Println(s.nome)

Você pode também usar pontos com ponteiros de estruturas - os ponteiros são desreferenciados automaticamente.

    sp := &s
    fmt.Println(sp.idade)

Estruturas são mutáveis.

    sp.idade = 51
    fmt.Println(sp.idade)
}
$ go run estruturas.go
{Bob 20}
{Alice 30}
{Fred 0}
&{Ann 40}
Sean
50
51

Próximo exemplo: Métodos.