Я ищу совет по наилучшему способу очистки следующей структуры. Я знаю, что Go не имеет статических методов, и обычно лучше инкапсулировать функциональность в отдельном пакете. Мои типы структур ссылаются друг на друга и поэтому не могут быть объявлены в отдельных пакетах из-за циклического импорта.
type Payment struct {
User *User
}
type User struct {
Payments *[]Payments
}
func (u *User) Get(id int) *User {
// Returns the user with the given id
}
func (p *Payment) Get(id int) *Payment {
// Returns the payment with the given id
}
Но, если я хочу загрузить пользователя или платеж, я просто отбрасываю получателя:
var u *User
user := u.Get(585)
Я мог бы пропустить пробелы в самих функциях, которые ставят меня нечистым:
func GetUser(id int) *User {
// Returns the user with the given id
}
func GetPayment(id int) *Payment {
// Returns the payment with the given id
}
Мне бы очень хотелось просто вызвать .Get
или подобное в структуре без написания имени структуры в самой функции. Какой идиоматический способ сделать это?