Ich suche Rat für die beste Möglichkeit, die folgende Struktur zu bereinigen. Ich weiß, Go hat keine statischen Methoden und es ist in der Regel better to encapsulate functionality in a separate package. Meine Strukturtypen referenzieren sich gegenseitig und können daher aufgrund von Ringimporten nicht in separaten Paketen deklariert werden.Go: "Static" -Methodedesign
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
}
Aber wenn ich einen Benutzer oder eine Zahlung zu laden, ich warf ich den Hörer einfach weg:
var u *User
user := u.Get(585)
Ich konnte die Funktionen selbst Namespace, der mich als unrein trifft:
Ich würde wirklich gerne nur .Get
oder ähnliche auf der Struktur aufrufen können, ohne den Namen der Struktur in der Funktion selbst zu schreiben. Was ist der idiomatische Weg, dies zu tun?
Ja, ich finde '.Get()' auf einer Struktur, die ich noch unrein wegwerfen. Für mich ist 'User.Get()' am saubersten; Wenn 'GetUser' die engste Annäherung ist, die ich bekommen kann, nehme ich es. – ash
@ash Ja, ich glaube, es ist der nächste, den Sie bekommen können, und der idiomatische Weg, es zu tun. –
Sie können mit GetUser und GetPayment keine Frameworks und Bibliotheken erstellen – rocketspacer