ฉันเป็นแฟนเก่าเป็นภาษาไพธอน dev บางครั้งกำลังพยายามอย่างหนักกับค explicit ธรรมชาติขององไปแล้ว ผมพยายามมาที่นี่เพื่อ refactor บางอย่างรหัสในการที่จะสามารถเลื่อนเป็นวิธีหนึ่งจากโครงสร้างของที่จะเป็นส่วนหนึ่งของส่วนเชื่อมต่อ. แต่โพรเซสดูเหมือนแปลกๆฉันต้องยืนยันผมไม่ได้ทำอะไรบางอย่างเกิดจาก.
ฉันต้องต่อไปนี้ส่วนเชื่อมต่อ,โครงสร้างและวิธีการ:
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"}
}
ดังนั้นอยู่ที่นี่ฉันมีส่วนเชื่อมต่อทั่วไปประมวลผลนี้เชื่อมต่อจะถูกเข้าไปโดยสิ่งกลับมาโดย GetExecuter วิธีการ.
ตอนนี้เป็นส่วนหนึ่งของ implementation ของพวกเธอคนนึงของฉัน Executer ฉันต้องการเพื่อย้ายรูปแบบวิธีการเหมือนเป็นส่วนหนึ่งของส่วนเชื่อมต่อ.
ดังนั้นฉันกำลังทำอะไรต่อไปนี้:
type Formatting interface {
format() string
}
type Formatter struct {}
func (formatter *Formatter) format(exe1 *MyExecuter) (string) {
return fmt.sprintf ("formated : %s", exe1.attribut1)
}
ดังนั้นฉันสร้างใหม่ส่วนติดต่อใหม่ว่างโครงสร้างและปรับปรุงของฉันฟังก์ชันต้องไปที่แอททริบิวต์ของฉันก่อนหน้าโครงสร้างของ.
ตอนนี้ดูเหมือนจะทำงานสำหรับฉันมันดูเหมือนนี่คือนิดหน่อ convoluted. โดยเฉพาะอย่างยิ่งตอนที่ฉันต้องการที่จะเพิ่มการอ้างอิงต้องของฉันเริ่มต้นสิ่งที่แอททริบิวต์ของวิธีการ. ฉันมาทำอะไรบางอย่างผิดมาที่นี่หรือนี่คือทางที่ถูกต้อ?