Je suis un ex python dev parfois aux prises avec la nature explicite de Go. J'essaie ici de refactoriser le code afin d'être en mesure de déplacer une méthode à partir d'une structure à faire partie d'une interface. Mais le processus semble bizarre pour moi, je tiens à confirmer que je ne fais pas quelque chose de mal.
J'ai les interfaces suivantes, la structure et les méthodes:
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"}
}
Donc, ici, j'ai une interface générique Exécuter, cette interface sera accessible par l'objet retourné par la GetExecuter méthode.
Maintenant, dans le cadre de la mise en œuvre de l'un de mes Exécuteur, je veux déplacer la méthode de mise en forme dans le cadre d'une interface.
Donc, je suis en train de faire le suivant:
type Formatting interface {
format() string
}
type Formatter struct {}
func (formatter *Formatter) format(exe1 *MyExecuter) (string) {
return fmt.sprintf ("formated : %s", exe1.attribut1)
}
J'ai donc créer une nouvelle interface, une nouvelle structure vide, et la mise à jour de ma fonction à prendre comme attribut de mon précédent de la structure.
Bien que cela semble fonctionner, il me semble que c'est un peu compliqué. Spécialement la partie où j'ai besoin d'ajouter une référence à mon premier objet en tant qu'attribut de la méthode. Suis-je en train de faire quelque chose de mal ici, ou est-ce la bonne manière?