Answer the question
In order to leave comments, you need to log in
How to interpret a construction in the GO language?
I'm trying to learn how to read programs on GO, and now I can't interpret this code:
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
Answer the question
In order to leave comments, you need to log in
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
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question