Yo soy un ex python dev a veces luchando con la naturaleza explícita de Ir. Estoy tratando de aquí a refactorizar el código con el fin de ser capaz de mover un método de una estructura a ser parte de una interfaz. Pero el proceso parece extraño para mí, deseo confirmar que no estoy haciendo algo incorrectamente.
Tengo el siguiente interfaces, estructura y métodos:
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"}
}
Así que aquí me tienen una interfaz genérica Ejecutar, esta interfaz se accede por el objeto devuelto por la GetExecuter método.
Ahora, como parte de la implementación de uno de mis Executer, quiero mover el Formato de método como parte de una interfaz.
Así que estoy haciendo lo siguiente:
type Formatting interface {
format() string
}
type Formatter struct {}
func (formatter *Formatter) format(exe1 *MyExecuter) (string) {
return fmt.sprintf ("formated : %s", exe1.attribut1)
}
Así que crear una nueva interfaz, una nueva estructura vacía, y la actualización de mi función para tomar como atributo de mi anterior estructura.
Mientras que esto parece funcionar, a mí me parece que esto es un poco complicado. Especialmente la parte donde tengo que agregar una referencia a mi objeto inicial como atributo del método. Estoy haciendo algo mal aquí, o este es el camino correcto?