Som bývalý python dev niekedy stretáva s explicitné charakter Ísť. Snažím tu refactor nejaký kód, aby sa mohli presunúť metódou z jednej štruktúry byť súčasťou rozhrania. Ale proces sa zdá divné mi, chcem potvrdiť, nie som, že robím niečo nesprávne.
Mám tieto rozhraní, štruktúra a metódy:
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 tu mám generické rozhranie Vykonať, toto rozhranie bude prístupný objekt vrátil GetExecuter metóda.
Teraz, ako súčasť realizácie jeden z mojich Executer, chcem posunúť Formát metódu, ako súčasť rozhranie.
Tak ja robím takto:
type Formatting interface {
format() string
}
type Formatter struct {}
func (formatter *Formatter) format(exe1 *MyExecuter) (string) {
return fmt.sprintf ("formated : %s", exe1.attribut1)
}
Tak som sa vytvoriť nové rozhranie, nové prázdne štruktúry, a aktualizovať svoju funkciu brať ako atribút mojej predchádzajúcej štruktúry.
Aj keď to vyzerá pracovať, zdá sa mi, že to je trochu komplikovaný. Osobitne časť, kde som sa musieť pridať odkaz na môj prvotný objekt ako atribút metódy. Robím niečo zle, alebo je to správna cesta?