Operações CRUD
Crie, leia, atualize e exclua
Operações CRUD é uma aula grátis de Go Academy no CoddyKit. Esta é a aula 2 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.
CRUD com GORM
O GORM transforma as quatro operações básicas, Create, Ler, Update, Delete, em chamadas de métodos em *gorm.DB. Você passa ponteiros para estruturas, e o GORM cria o SQL.
Create
Create insere um registro. Depois da execução, o GORM preenche a chave primária e as marcas de data e hora da estrutura com os valores do banco de dados.
user := User{Name: "Ada", Email: "ada@example.com"}
result := db.Create(&user)
fmt.Println(user.ID, result.RowsAffected)Leitura com First
First busca o primeiro registro correspondente, ordenado pela chave primária. Passe um ponteiro para receber o resultado; as condições são fornecidas como argumentos adicionais.
var user User
db.First(&user, 1) // by primary key
db.First(&user, "email = ?", "ada@example.com")Leitura de vários registros com Find
Find carrega várias linhas em uma fatia. Sem condições, retorna todas as linhas; com Where, aplica um filtro.
var users []User
db.Where("age > ?", 18).Find(&users)Update
Save atualiza todos os campos de um registro. Update e Updates alteram colunas específicas, evitando substituir campos que você não pretendia modificar.
db.Model(&user).Update("name", "Ada L.")
db.Model(&user).Updates(User{Name: "Ada", Age: 36})Atenção aos valores zero
Ao atualizar usando uma estrutura, o GORM ignora os campos com valor zero, como 0, o valor falso e a string vazia. Para atualizar uma coluna com um valor zero, passe um mapa em vez de uma estrutura.
db.Model(&user).Updates(map[string]interface{}{"age": 0, "active": false})Delete
Delete remove um registro. Se o modelo tiver um campo DeletedAt, essa será uma exclusão lógica: a marca de data e hora será definida em vez de a linha ser removida.
db.Delete(&user, 1)Uma simulação executável de CRUD
GORM precisa de um banco de dados real, portanto este exemplo executável simula criação, leitura, atualização e exclusão em uma fatia mantida na memória para mostrar o ciclo de vida.
package main
import "fmt"
type User struct {
ID int
Name string
}
func main() {
var users []User
next := 1
// Create
u := User{ID: next, Name: "Ada"}
users = append(users, u)
next++
// Read
fmt.Println("read:", users[0])
// Update
users[0].Name = "Ada L."
fmt.Println("updated:", users[0])
// Delete
users = users[:0]
fmt.Println("count after delete:", len(users))
}Verificando erros
Cada chamada do GORM retorna um *gorm.DB cujo campo Error contém qualquer falha. Um registro ausente produz gorm.ErrRecordNotFound em First.
if err := db.First(&user, 99).Error; err == gorm.ErrRecordNotFound {
fmt.Println("no such user")
}Encadeamento de métodos
O GORM usa um construtor encadeável: db.Where(...).Order(...).Limit(...).Find(&users). Cada método restringe a consulta, e o método final (Find, First) a executa.
Inserção em lote
Passe uma fatia para Create para inserir várias linhas em uma única instrução. CreateInBatches divide fatias muito grandes em blocos para permanecer dentro dos limites.
db.Create(&[]User{{Name: "A"}, {Name: "B"}})Verificação rápida
Teste seus conhecimentos sobre CRUD.
Recapitulação
Você aprendeu sobre operações CRUD:
- Create insere e preenche a chave primária
- First e Find leem uma ou várias linhas
- Save, Update e Updates fazem alterações; mapas impõem valores zero
- Delete realiza uma exclusão lógica quando DeletedAt existe
- Verifique o campo Error; encadeie métodos para consultas complexas
Perguntas Frequentes
A aula “Operações CRUD” é grátis?
Sim — o texto completo de “Operações CRUD” é 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 “Operações CRUD”?
Crie, leia, atualize e exclua 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 2 de 4.
Quanto tempo leva a aula “Operações CRUD”?
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