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
- Modelle und AutoMigrate
- CRUD-Operationen
- Assoziationen
- Hooks und Scopes