Modelos e AutoMigrate
Defina e migre o esquema
Modelos e AutoMigrate é uma aula grátis de Go Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Go Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Go Academy inclui 4 aulas no total.
O que é GORM
GORM é o ORM mais popular para Go. Ele mapeia estruturas de Go para tabelas do banco de dados, permitindo trabalhar com objetos em vez de SQL bruto. É compatível com PostgreSQL, MySQL, SQLite e outros bancos.
- Mapeamento de estruturas para tabelas
- Migrações automáticas
- Associações e ganchos
Definindo um modelo
Um modelo é uma estrutura de Go. Cada campo exportado se torna uma coluna. Incorporar gorm.Model adiciona os campos ID, CreatedAt, UpdatedAt e DeletedAt.
type User struct {
gorm.Model
Name string
Email string
Age int
}Tags de campos
As tags de estruturas personalizam as colunas. Você pode definir tamanho, exclusividade, índices e valores padrão com a tag gorm. Uma tag é escrita entre crases após o tipo do campo, por exemplo, gorm:"uniqueIndex;size:255".
type User struct {
// ID uint tag: gorm:"primaryKey"
// Email string tag: gorm:"uniqueIndex;size:255"
// Name string tag: gorm:"not null"
ID uint
Email string
Name string
}Convenções de nomenclatura
Por padrão, o GORM usa nomes no plural e sublinhados entre as palavras: uma estrutura User é mapeada para uma tabela users, e o campo CreatedAt é mapeado para created_at. Você pode substituir essas convenções.
Abrindo com GORM
gorm.Open recebe um dialeto para seu banco de dados e retorna um *gorm.DB. Esse identificador encapsula o conjunto de conexões.
db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
if err != nil {
log.Fatal(err)
}AutoMigrate
AutoMigrate cria tabelas, colunas ausentes e índices para corresponder às suas estruturas. A operação é aditiva: ela não exclui colunas nem altera tipos de forma destrutiva.
db.AutoMigrate(&User{}, &Product{})O que AutoMigrate não faz
AutoMigrate nunca exclui colunas não utilizadas nem reduz tipos, para evitar perda de dados. Para renomear, excluir ou alterar tipos, você precisa de ferramentas de migração explícitas.
Uma simulação executável de mapeamento de modelos
GORM precisa de um driver de banco de dados real, portanto este exemplo executável simula o mapeamento de tabelas e colunas com sublinhados que AutoMigrate realiza.
package main
import (
"fmt"
"strings"
)
func toSnake(s string) string {
var b strings.Builder
for i, r := range s {
if i > 0 && r >= 65 && r <= 90 {
b.WriteByte(95)
}
if r >= 65 && r <= 90 {
r = r + 32
}
b.WriteRune(r)
}
return b.String()
}
func main() {
model := "User"
fields := []string{"ID", "Name", "CreatedAt"}
fmt.Println("table:", toSnake(model)+"s")
for _, f := range fields {
fmt.Println("column:", toSnake(f))
}
}O campo DeletedAt
Se o seu modelo incorporar gorm.Model ou tiver um campo gorm.DeletedAt, o GORM habilitará exclusões lógicas. As linhas excluídas recebem uma marca de data e hora e ficam ocultas das consultas, em vez de serem removidas.
Nomes de tabelas personalizados
Implemente um método TableName no modelo para substituir o padrão. Isso é útil quando o seu esquema usa nomes que não correspondem às convenções do GORM.
func (User) TableName() string {
return "app_users"
}Observação sobre pacote externo
GORM e seus dialetos ficam fora da biblioteca padrão, exigindo go get gorm.io/gorm e um driver como gorm.io/driver/postgres. Os trechos de GORM apresentados aqui são ilustrativos.
Verificação rápida
Teste seus conhecimentos sobre modelos.
Recapitulação
Você aprendeu sobre modelos e AutoMigrate:
- Estruturas são mapeadas para tabelas; gorm.Model adiciona ID e marcas de data e hora
- Tags definem chaves primárias, índices e restrições
- A nomenclatura padrão usa nomes no plural com sublinhados
- AutoMigrate é aditivo e nunca destrutivo
- DeletedAt habilita exclusões lógicas
Perguntas Frequentes
A aula “Modelos e AutoMigrate” é grátis?
Sim — o texto completo de “Modelos e AutoMigrate” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Go Academy, atualize para CoddyKit PRO. O curso de Go Academy inclui 4 aulas no total.
O que vou aprender em “Modelos e AutoMigrate”?
Defina e migre o esquema Você pratica Go Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Go Academy?
Nenhuma experiência prévia é necessária. Go Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Modelos e AutoMigrate”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Go Academy?
Sim. Cada aula de Go Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Modelos e AutoMigrate
- Operações CRUD
- Associações
- Hooks e escopos