0Pricing
Go Academy · Lektion

CRUD-Operationen

Erstellen, lesen, aktualisieren und löschen

CRUD-Operationen ist eine kostenlose Go Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Go Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.

CRUD mit GORM

GORM macht aus den vier grundlegenden Operationen Create, Read, Update, Delete Methodenaufrufe auf *gorm.DB. Sie übergeben Zeiger auf Strukturen, und GORM erstellt daraus das SQL.

Create

Create fügt einen Datensatz ein. Nach der Ausführung trägt GORM den Primärschlüssel und die Zeitstempel aus der Datenbank in die Struktur ein.

user := User{Name: "Ada", Email: "ada@example.com"}
result := db.Create(&user)
fmt.Println(user.ID, result.RowsAffected)

Lesen mit First

First ruft den ersten passenden Datensatz ab, sortiert nach dem Primärschlüssel. Übergeben Sie einen Zeiger, um das Ergebnis zu erhalten; Bedingungen werden als zusätzliche Argumente angegeben.

var user User
db.First(&user, 1)               // by primary key
db.First(&user, "email = ?", "ada@example.com")

Mehrere Datensätze mit Find lesen

Find lädt mehrere Zeilen in eine Slice. Ohne Bedingungen werden alle Zeilen zurückgegeben, mit Where wird die Ergebnismenge gefiltert.

var users []User
db.Where("age > ?", 18).Find(&users)

Aktualisieren

Save aktualisiert alle Felder eines Datensatzes. Update und Updates ändern bestimmte Spalten. Dadurch vermeiden Sie, versehentlich Felder zu überschreiben, die Sie nicht ändern wollten.

db.Model(&user).Update("name", "Ada L.")
db.Model(&user).Updates(User{Name: "Ada", Age: 36})

Fallstrick bei Nullwerten

Beim Aktualisieren mit einer Struktur ignoriert GORM Felder mit Nullwerten (0, false, ""). Um eine Spalte auf einen Nullwert zu setzen, übergeben Sie statt einer Struktur eine Map.

db.Model(&user).Updates(map[string]interface{}{"age": 0, "active": false})

Löschen

Delete entfernt einen Datensatz. Wenn das Model ein Feld DeletedAt besitzt, handelt es sich um einen Soft Delete: Der Zeitstempel wird gesetzt, anstatt die Zeile zu entfernen.

db.Delete(&user, 1)

Eine ausführbare CRUD-Simulation

GORM benötigt eine echte Datenbank. Dieses ausführbare Beispiel bildet daher Create, Read, Update und Delete mit einer In-Memory-Slice ab, um den Lebenszyklus zu veranschaulichen.

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))
}

Fehler prüfen

Jeder GORM-Aufruf gibt ein *gorm.DB zurück, dessen Feld Error einen möglichen Fehler enthält. Wenn kein Datensatz gefunden wird, liefert First gorm.ErrRecordNotFound.

if err := db.First(&user, 99).Error; err == gorm.ErrRecordNotFound {
    fmt.Println("no such user")
}

Methodenverkettung

GORM verwendet einen verkettbaren Builder: db.Where(...).Order(...).Limit(...).Find(&users). Jede Methode schränkt die Abfrage weiter ein, und die letzte Methode (Find, First) führt sie aus.

Stapelweises Einfügen

Übergeben Sie Create eine Slice, um viele Zeilen mit einem einzigen Statement einzufügen. CreateInBatches teilt sehr große Slices in Blöcke auf, damit die Limits eingehalten werden.

db.Create(&[]User{{Name: "A"}, {Name: "B"}})

Kurzer Test

Testen Sie Ihr Wissen über CRUD.

Zusammenfassung

Sie haben CRUD-Operationen kennengelernt:

  • Create fügt Datensätze ein und trägt den Primärschlüssel nachträglich ein
  • First und Find lesen einzelne beziehungsweise mehrere Zeilen
  • Save, Update und Updates ändern Datensätze; Maps erzwingen Nullwerte
  • Delete führt bei vorhandenem DeletedAt einen Soft Delete durch
  • Prüfen Sie das Error-Feld und verketten Sie Methoden für komplexe Abfragen

Häufig gestellte Fragen

Ist die Lektion „CRUD-Operationen“ kostenlos?

Ja — der vollständige Text von „CRUD-Operationen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Go Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „CRUD-Operationen“?

Erstellen, lesen, aktualisieren und löschen Du übst Go Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Go Academy zu starten?

Keine Vorkenntnisse erforderlich. Go Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „CRUD-Operationen“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Go Academy-Lektion Code schreiben und ausführen?

Ja. Jede Go Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Modelle und AutoMigrate
  2. CRUD-Operationen
  3. Assoziationen
  4. Hooks und Scopes
← Zurück zu Go Academy