리팩터링 방법의 일부가 될 수 있는 인터페이스

0

질문

저는 파이썬 dev 때로는 어려움을 겪고 명시적인 자연의 이동합니다. 나려는 것을 압축하기 위해 코드를 이동할 수 있는 방법에서 하나 구조물의 일부가 될 수 있는 인터페이스입니다. 하지만 프로세스는 것이 이상한 나에게 소원을 확인하는 나가지 않고 뭔가 잘못되었습니다.

나는 다음과 같은 인터페이스 구조와 방법:

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 방법입니다.

지금의 한 부분으로 구현 하나의 내 Executer,나는 원하는 이동하는 형식으로방법의 일환으로 인터페이스입니다.
그래서 나는 다음과 같다:

type Formatting interface {
    format() string
}

type Formatter struct {}

func (formatter *Formatter) format(exe1 *MyExecuter) (string) {
    return fmt.sprintf ("formated : %s", exe1.attribut1)
}

그래서 내가 만드는 새로운 인터페이스,새로운 빈 구조 업데이트 기능을 특성으로 내 이전 구조입니다.

이 작동 하는 것,그것이 나를 이것은 복잡한 비트. 특별히 이 부분을 추가 할 필요가있을 참조하거나 객체의 속성으로 이 방법입니다. 내가 뭔가 잘못된 여기에,또는 이것은 올바른 방법?

go interface
2021-11-22 20:42:22
1

최고의 응답

3

귀하의 Executer 구현미를 구현하는 Formatting 인터페이스::

type Executing interface {
    Execute()
}

type Formatting interface {
    format() string
}

func (exe1 MyExecuter) format() string {
    return fmt.sprintf ("formated : %s", exe1.attribut1) 
}


func (exe1 MyExecuter) Execute() {
    //Executing
    fmt.Println(exe.format())
}

v:=MyExecuter{}
// Here, v implements Executing and Formatting interfaces

여기서 한가지 유의할 사항:코드를 보여주는 포인터 수 있습니다. 는 방법에 대해 정의된 *MyExecuterMyExecuter. 그래서 당신은 패스 포인터 구조체에 대한 인스턴스이다. 또는,내가 그랬던 것처럼 위의 값을 사용하여,수신기에서는 방법에 대해 정의된 모두 MyExecuter*MyExecuter.

2021-11-22 20:47:20

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................