как создать запрос bool в спокойном - PullRequest
1 голос
/ 27 мая 2020

У меня есть такая модель пользователя:

type User struct {
    Name    string
    Enabled bool  // this is an bool field
    Online  bool  // this is an bool field

    // other field ...
}

при создании пользователя:

POST /api/v1/users 
{
    "name": "hello",
    "enabled": true  // option, default is true
}

модель запроса на создание:

type CreateUserReq struct {
    Name    string
    Enabled bool  // but golang default value is false
}

когда список user:

GET /api/v1/users               // list all users, but golang default value is false
GET /api/v1/users?enabled=true  // list enabled users
GET /api/v1/users?enabled=false // list disabled users

модель запроса списка:

type ListUserReq struct {
    Status bool // but golang default value is false
}

Как обычно можно решить эту проблему?

1 Ответ

2 голосов
/ 27 мая 2020

Переменным без начального значения присваивается нулевое значение. Для логического типа нулевым значением является false. Ref

Вы можете использовать указатель bool, нулевое значение которого равно nil. Затем вы можете проверить, установлен ли Enabled или нет. И проверьте обработчик, если Enabled равно nil, затем установите true для случая по умолчанию.

type CreateUserReq struct {
    Name    string
    Enabled *bool  
}
...