type db interface {
SelectUser() ([]*User, error)
}
type Model struct {
db
}
func New(db db) *Model {
return &Model{
db: db,
}
}
func (m *Model) User() ([]*User, error) {
return m.SelectUser()
}
m := model.New(db)
func (p *myDb) SelectUser()([]*model.User, error) {
user := make([]*model.User, 0)
if err := p.sqlSelectPeople.Select(&user);
err != nil {
return nil, err
}
return user, nil
type db interface { //Объявляется контракт о том что тип db должен уметь SelectUser()
SelectUser() ([]*User, error)
}
type Model struct { //Структура Model включает как поле тип db с наследованием методов и полей
model.SelectUser()
db
}
func New(db db) *Model { //Делаем из экземпляра db экземпляр Model для расширения набора методов
return &Model{
db: db,
}
}
func (m *Model) User() ([]*User, error) { //Объявления метода для типа Model
return m.SelectUser()
}
m := model.New(db) //Делаем экземпляр Model
func (p *myDb) SelectUser()([]*model.User, error) { //Объявляем метод для типа myDb
user := make([]*model.User, 0) //Аллокация массива ссылок на экземпляры model.User
if err := p.sqlSelectPeople.Select(&user); //sql запрос к базе предоставляет созданный массив для выборки
err != nil {
return nil, err
}
return user, nil