Eu sou um ex python dev, por vezes, lutando com a explícita a natureza de Ir. Eu estou tentando aqui para refatorar um código a fim de ser capaz de mover um método a partir de uma estrutura a ser parte de uma interface. Mas o processo parece estranho para mim, eu gostaria de confirmar que eu não estou fazendo algo errado.
Eu tenho as seguintes interfaces, estrutura e 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"}
}
Então aqui eu tenho uma interface genérica de Execução, esta interface será acessado por objeto retornado pelo GetExecuter método.
Agora, como parte da implementação de um dos meus Executora, eu quero passar o Formato método como parte de uma interface.
Então, eu estou fazendo o seguinte:
type Formatting interface {
format() string
}
type Formatter struct {}
func (formatter *Formatter) format(exe1 *MyExecuter) (string) {
return fmt.sprintf ("formated : %s", exe1.attribut1)
}
Assim que eu criar uma nova interface, um novo vazio estrutura, e atualizar a minha função para tomar como atributo a minha estrutura anterior.
Enquanto isso parece funcionar, parece-me que é um pouco complicada. Especialmente a parte em que eu preciso para adicionar uma referência para o objeto inicial como atributo do método. Estou fazendo algo de errado aqui, ou esse é o caminho certo?