Io sono un ex python dev a volte alle prese con la natura esplicita di Andare. Sto cercando di effettuare il refactoring del codice in modo da essere in grado di spostare un metodo da una struttura ad essere parte di una interfaccia. Ma il processo sembra strano anche a me, desidero confermare che non sto facendo qualcosa di sbagliato.
Ho il seguente interfacce, struttura e metodi:
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"}
}
Così qui ho una interfaccia generica Eseguire, questa interfaccia, accessibile da oggetto restituito dalla GetExecuter metodo.
Ora, come parte dell'attuazione di un mio esecutore testamentario, voglio spostare il metodo Format come parte di una interfaccia.
Così sto facendo la seguente:
type Formatting interface {
format() string
}
type Formatter struct {}
func (formatter *Formatter) format(exe1 *MyExecuter) (string) {
return fmt.sprintf ("formated : %s", exe1.attribut1)
}
Così ho creato una nuova interfaccia, una nuova struttura vuota, e di aggiornare la mia funzione di prendere come attributo il mio precedente struttura.
Mentre questo sembra funzionare, mi sembra un po ' contorta. Specialmente la parte in cui ho bisogno di aggiungere un riferimento al mio oggetto iniziale, come attributo del metodo. Sto facendo qualcosa di sbagliato qui, o questo è il modo giusto?