AnyCompiler

Structs

Um struct agrupa campos relacionados sob um tipo nomeado — Go não tem classes, então um struct mais suas functions associadas (abordado na próxima lição) é como você modela uma "coisa" com dados.

package main

import "fmt"

type Person struct {
	Name string
	Age  int
}

func main() {
	alice := Person{Name: "Alice", Age: 30}
	fmt.Println(alice.Name, "is", alice.Age, "years old")
}
Output
Alice is 30 years old

Structs são valores

Atribuir ou passar um struct o copia por padrão — rect.Width = 12 só muda a variável local rect em main, não alguma instância compartilhada em outro lugar. Imprimir um struct diretamente com Println mostra todos os valores dos seus campos em ordem.

package main

import "fmt"

type Rectangle struct {
	Width, Height float64
}

func main() {
	rect := Rectangle{Width: 10, Height: 5}
	rect.Width = 12
	fmt.Println(rect)
}
Output
{12 5}

A seguir: methods — anexando comportamento a um struct com receivers.

Practice exercise

Defina um struct Book com os campos Title string e Pages int. Crie um book com Title "Dune" e Pages 412, depois imprima book.Title e book.Pages usando fmt.Println(book.Title, book.Pages).