Jestem byłym programista python, czasami walczy z wyraźnym naturą Go. Staram się tutaj reorganizacji jakiś kod, aby móc przenosić metoda z jednej struktury w część interfejsu. Ale ten proces wydaje mi się dziwne, chcę potwierdzić, że nie robię coś źle.
Mam następujące interfejsy, struktura i 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 więc, tutaj mam wspólny interfejs wykonania, dostęp do tego interfejsu będzie realizowany przedmiot, wartość zwracana przez metodę GetExecuter.
Teraz, w ramach realizacji jednego z moich wykonawców, chcę przenieść metodę formatowania jako część interfejsu.
Robię więc następujący:
type Formatting interface {
format() string
}
type Formatter struct {}
func (formatter *Formatter) format(exe1 *MyExecuter) (string) {
return fmt.sprintf ("formated : %s", exe1.attribut1)
}
Dlatego tworzę nowy interfejs, nową, pustą strukturę i aktualizować swoją funkcję, aby użyć jako atrybutu moją poprzednią strukturę.
Choć wydaje się, że działa, wydaje mi się, że to trochę skomplikowane. Szczególnie ta część, gdzie trzeba dodać link na mój oryginalny obiekt jako atrybutu metody. Robię coś tu jest nie tak, czy jest to właściwy sposób?