CRUD-operationer
Opret, læs, opdatér og slet
CRUD-operationer er en gratis Go Academy-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Go Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Go Academy-kurset indeholder 4 lektioner i alt.
CRUD med GORM
GORM omsætter de fire grundlæggende handlinger, Create, Read, Update, Delete, til metodekald på *gorm.DB. Du videregiver pointere til strukturer, og GORM bygger SQL'en.
Create
Create indsætter en post. Når den er kørt, udfylder GORM strukturens primærnøgle og tidsstempler fra databasen.
user := User{Name: "Ada", Email: "ada@example.com"}
result := db.Create(&user)
fmt.Println(user.ID, result.RowsAffected)Læs med First
First henter den første matchende post sorteret efter primærnøgle. Videregiv en pointer for at modtage resultatet; betingelser angives som ekstra argumenter.
var user User
db.First(&user, 1) // by primary key
db.First(&user, "email = ?", "ada@example.com")Læs flere med Find
Find indlæser flere rækker i en slice. Uden betingelser returnerer den alle rækker; med Where filtrerer den resultatet.
var users []User
db.Where("age > ?", 18).Find(&users)Update
Save opdaterer alle felter i en post. Update og Updates ændrer bestemte kolonner, så du undgår at overskrive felter, du ikke havde til hensigt at ændre.
db.Model(&user).Update("name", "Ada L.")
db.Model(&user).Updates(User{Name: "Ada", Age: 36})Faldgruben ved nulværdier
Når du opdaterer med en struktur, ignorerer GORM felter med nulværdi (0, false, ""). Hvis du vil opdatere en kolonne til en nulværdi, skal du videregive et map i stedet for en struktur.
db.Model(&user).Updates(map[string]interface{}{"age": 0, "active": false})Delete
Delete fjerner en post. Hvis modellen har et DeletedAt-felt, er dette en logisk sletning, der angiver tidsstemplet i stedet for at fjerne rækken.
db.Delete(&user, 1)En kørbar CRUD-simulering
GORM kræver en rigtig database, så dette kørbare eksempel modellerer oprettelse, læsning, opdatering og sletning over en slice i hukommelsen for at vise livscyklussen.
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))
}Kontrol af fejl
Hvert GORM-kald returnerer en *gorm.DB, hvis Error-felt indeholder eventuelle fejl. En manglende post giver gorm.ErrRecordNotFound på First.
if err := db.First(&user, 99).Error; err == gorm.ErrRecordNotFound {
fmt.Println("no such user")
}Kædning af metoder
GORM bruger en kædbar forespørgselsbygger: db.Where(...).Order(...).Limit(...).Find(&users). Hver metode indsnævrer forespørgslen, og den sidste metode (Find, First) udfører den.
Masseindsættelse
Videregiv en slice til Create for at indsætte mange rækker i én SQL-sætning. CreateInBatches opdeler meget store slices i dele, så de holder sig inden for grænserne.
db.Create(&[]User{{Name: "A"}, {Name: "B"}})Hurtig kontrol
Afprøv din viden om CRUD.
Opsummering
Du har lært om CRUD-handlinger:
- Create indsætter og udfylder primærnøglen efterfølgende
- First og Find læser henholdsvis én og flere rækker
- Save, Update og Updates ændrer data; maps gennemtvinger nulværdier
- Delete foretager logisk sletning, når DeletedAt findes
- Kontrollér Error-feltet; kæd metoder sammen til komplekse forespørgsler
Lær Go med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 51
- Lektioner
- 203
Ofte stillede spørgsmål
Er lektionen “CRUD-operationer” gratis?
Ja — alle 3 lektioner i læringssporet Go Academy, inklusive “CRUD-operationer”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Go Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “CRUD-operationer”?
Opret, læs, opdatér og slet Du øver dig i Go Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Go Academy?
Der kræves ingen tidligere erfaring. Go Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.
Hvor lang tid tager lektionen “CRUD-operationer”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Go Academy-lektion?
Ja. Alle Go Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Modeller og AutoMigrate
- CRUD-operationer
- Associationer
- Hooks og scopes