Já jsem bývalý python dev někdy potýká s explicitní povaze Jít. Já se tady snažím, aby refaktorovat kódu, aby bylo možné přesunout metoda, z jedné struktury být součástí rozhraní. Ale ten proces mi přijde divný, rád bych potvrdil, že nedělám něco špatně.
Mám následující rozhraní, struktury a metody:
type Executing interface {
Execute()
}
type MyExecuter struct {
attribut1 string
}
//The function I wish to move
func (exe1 *MyExecuter) format() string {
return fmt.sprintf ("formated : %s", exe1.attribut1)
}
func (exe1 *MyExecuter) Execute() {
//Executing
fmt.Println(exe.format())
}
func GetExecuter () Executer{
return MyExecuter{attribut1: "test"}
}
Takže tady máme obecný rozhraní Spustit, toto rozhraní bude přístupné objekt vrácený GetExecuter metoda.
Nyní, jako součást realizace jednoho z mých Executer, chci se přestěhovat Formát metoda jako součást rozhraní.
Tak jsem dělala následující:
type Formatting interface {
format() string
}
type Formatter struct {}
func (formatter *Formatter) format(exe1 *MyExecuter) (string) {
return fmt.sprintf ("formated : %s", exe1.attribut1)
}
Tak jsem se vytvořit nové rozhraní, nové prázdné struktury, a aktualizovat své funkce, aby se jako atribut můj předchozí struktury.
I když se to zdá k práci, zdá se mi, že je to trochu spletitý. Speciálně ta část, kde jsem třeba přidat odkaz na můj původní objekt jako atribut metody. Dělám něco špatně, nebo je to správná cesta?