Копировать значения из одной структуры в другую в Голанге - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть две структуры:

type UpdateableUser struct {
    FirstName string
    LastName string
    Email string
    Tlm float64
    Dob time.Time
}

type User struct {
    Id string
    FirstName string
    LastName string
    Email string
    DOB time.Time
    Tlm float64
    created time.Time
    updated time.Time
}

Через связыватель я связываю данные запроса со структурой updateableUser, поэтому у меня может быть updateableUser только с одним «реальным» значением, например, uu здесь:

uu := UpdateableUser{Lastname: "Smith"}

Теперь я хочу установить только не "emtpy" значения от UpdateableUser до User.Можете ли вы дать мне подсказку или больше?

1 Ответ

0 голосов
/ 05 декабря 2018

Я бы рекомендовал встраивать структуру с возможностью обновления в более крупную структуру:

type UpdateableUser struct {
    FirstName string
    LastName  string
    Email     string
    Tlm       float64
    Dob       time.Time
}

type User struct {
    UpdateableUser
    ID      string
    created time.Time
   updated time.Time
}

func (u *User) UpdateFrom(src *UpdateableUser) {
    if src.FirstName != "" {
        u.FirstName = src.FirstName
    }
    if src.LastName != "" {
        u.LastName = src.LastName
    }
    // ... And other properties. Tedious, but simple and avoids Reflection
}

Это позволяет вам использовать UpdateableUser в качестве интерфейса, чтобы указать, какие свойства могут быть обновлены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...