0Pricing
Go Academy · Урок

Операции CRUD

Создавайте, читайте, обновляйте и удаляйте данные

«Операции CRUD» — бесплатный урок Go Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Go Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Go Academy содержит 4 уроков всего.

Операции CRUD с GORM

GORM превращает четыре базовые операции — Create, чтение, Update, Delete — в вызовы методов объекта *gorm.DB. Вы передаёте указатели на структуры, а GORM формирует SQL.

Create

Create добавляет запись. После выполнения GORM заполняет первичный ключ и временные метки структуры данными из базы.

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

Чтение с помощью First

First получает первую подходящую запись, отсортированную по первичному ключу. Передайте указатель, чтобы получить результат; условия передаются дополнительными аргументами.

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

Чтение нескольких записей с помощью Find

Find загружает несколько строк в срез. Без условий он возвращает все строки, а с Where выполняет фильтрацию.

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

Update

Save обновляет все поля записи. Update и Updates изменяют только указанные столбцы, поэтому поля, которые Вы не собирались менять, не перезаписываются.

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

Особенность нулевых значений

При обновлении с помощью структуры GORM игнорирует поля с нулевыми значениями (0, false, ""). Чтобы установить для столбца нулевое значение, передайте карту вместо структуры.

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

Delete

Delete удаляет запись. Если у модели есть поле DeletedAt, выполняется мягкое удаление: устанавливается временная метка, а строка не удаляется.

db.Delete(&user, 1)

Рабочая симуляция CRUD

GORM нужна настоящая база данных, поэтому этот запускаемый пример моделирует создание, чтение, обновление и удаление во временном срезе, чтобы показать жизненный цикл записи.

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

Проверка ошибок

Каждый вызов GORM возвращает объект *gorm.DB, поле Error которого содержит сведения о любой ошибке. Если запись не найдена, вызов First возвращает gorm.ErrRecordNotFound.

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

Цепочки методов

GORM использует конструктор с цепочкой вызовов: db.Where(...).Order(...).Limit(...).Find(&users). Каждый метод уточняет запрос, а последний метод (Find, First) выполняет его.

Пакетная вставка

Передайте срез в Create, чтобы вставить много строк одним выражением. CreateInBatches разделяет очень большие срезы на части, чтобы не превышать ограничения.

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

Быстрая проверка

Проверьте свои знания об операциях CRUD.

Итоги

Вы изучили операции CRUD:

  • Create вставляет запись и заполняет первичный ключ
  • First и Find считывают одну или несколько строк
  • Сохранение, Update и Updates изменяют данные; карты принудительно устанавливают нулевые значения
  • Delete выполняет мягкое удаление, если существует DeletedAt
  • Проверяйте поле Error; объединяйте методы в цепочки для сложных запросов

Часто задаваемые вопросы

Урок «Операции CRUD» бесплатный?

Да — полный текст урока «Операции CRUD» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Go Academy, подпишись на CoddyKit PRO. Курс Go Academy содержит 4 уроков всего.

Чему я научусь в уроке «Операции CRUD»?

Создавайте, читайте, обновляйте и удаляйте данные Ты практикуешь Go Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Go Academy?

Предыдущий опыт не требуется. Go Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Операции CRUD»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Go Academy?

Да. Каждый урок Go Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Модели и AutoMigrate
  2. Операции CRUD
  3. Ассоциации
  4. Хуки и области видимости
← Назад к Go Academy