Eu sunt un ex python-dev, uneori, se luptă cu caracterul explicit de a Merge. Am încercat aici să refactor un cod pentru a putea muta o metodă de o structură pentru a fi parte dintr-o interfață. Dar procesul pare ciudat pentru mine, doresc să confirm eu nu fac ceva greșit.
Am următoarele interfețe, structura și metodele:
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"}
}
Deci, aici am un generic interfață Executa, aceasta interfata va fi accesate prin obiectul returnat de GetExecuter metodă.
Acum, ca parte a punerii în aplicare de unul dintre Executer, vreau să mă mut în Format metodă ca parte a unei interfețe.
Fac, deci, următoarele:
type Formatting interface {
format() string
}
type Formatter struct {}
func (formatter *Formatter) format(exe1 *MyExecuter) (string) {
return fmt.sprintf ("formated : %s", exe1.attribut1)
}
Așa că am crea o noua interfata, un nou gol structura și actualizează funcția mea de a avea ca atribut meu anterior structură.
În timp ce acest lucru pare să funcționeze, mi se pare că acest lucru este un pic complicat. În special partea în care am nevoie pentru a adăuga o referință la mea inițială a obiectului ca atribut al metodei. Fac ceva gresit aici, sau aceasta este calea cea dreaptă?