Go Academy · Lektion

CRUD-operationer

Opret, læs, opdatér og slet

Lektion 2 af 413 trin

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
Gratis at komme i gang

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

  1. Modeller og AutoMigrate
  2. CRUD-operationer
  3. Associationer
  4. Hooks og scopes
← Tilbage til Go Academy