Szukam porady na temat najlepszego sposobu na oczyszczenie następującej struktury. Wiem, że Go nie ma statycznych metod i zwykle jest to better to encapsulate functionality in a separate package. Moje typy struktur odwołują się do siebie, więc nie można ich zadeklarować w osobnych pakietach z powodu importu cyklicznego.Go: "Statyczny" projekt metody
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
}
Ale jeśli chcę, aby załadować użytkownika lub zapłatę, po prostu wyrzucać odbiornika:
var u *User
user := u.Get(585)
mogłem przestrzeni nazw z funkcji siebie, co wydaje mi się nieczystego
func GetUser(id int) *User {
// Returns the user with the given id
}
func GetPayment(id int) *Payment {
// Returns the payment with the given id
}
Naprawdę chciałbym móc po prostu zadzwonić pod numer .Get
lub podobny na struct bez wpisywania nazwy struktury w samej funkcji. Jaki jest idiomatyczny sposób na zrobienie tego?
Tak, znajduję '.Get()' na strukturze, które odrzucam jeszcze bardziej nieczyste. Dla mnie 'User.Get()' jest najczystszy; jeśli 'GetUser' jest najbliższym przybliżeniem, które mogę uzyskać, wezmę to. – ash
@ash Tak, uważam, że jest najbliżej, i najbardziej idiomatyczny sposób na zrobienie tego. –
Nie można tworzyć frameworka i bibliotek przy użyciu GetUser i GetPayment – rocketspacer