@ AJR дал очень хороший вариант. вот альтернативный подход.
Для каждой структуры (Book
и User
) создайте метод с именем New<StructName
. Взяв Book
в качестве примера
func NewBook() *Book {
return &Book {
//you can fill in default values here for common construct
}
}
Вы можете дополнительно расширить этот шаблон, создав структуру Common
и передав ее в NewBook
при ее создании, т.е.
func NewBook(c Common) *Book {
return &Book {
Common: c
//other fields here if needed
}
}
Теперь в вашем основном коде вы сделаете это
func main() {
c := NewCommon() //this method can create common object with default values or can take in values and create common object with those
book := NewBook(c)
//now you don't need autofill method
fmt.Println("Thanks, playground")
}