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.
main.go
Teste você mesmo →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.
main.go
Teste você mesmo →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).