interface 와 Struct Embed 예제 > IT 기술백서

[code]

package main

/**

* Api Interface

**/

type Api interface {

  save() (bool, error)

}

/**

* Work Structure

**/

type Work struct { }

func (w *Work) Test() {

  println(“테스트!!!!”)

}

/**

* ApiChild Structure

**/

type ApiChild struct {

  Work // Work Struct Embed

}

// Api interface 를 구현

func (a *ApiChild) save() (bool, error) {

  println(“저장!”)

  return true, nil

}

/**

* App Structure

**/

type App struct {

  api Api

}

func main() {

  app := new(App)

  app.api = new(ApiChild)

  app.api.save() // Api 를 구현한 save() 메소드 호출

  c := app.api.(*ApiChild) // Assertion 으로 Downcast

  c.Test() // Work 의 Method 를 사용할 수 있다.

}

[/code]

 

출력

[code]

저장!

테스트!!!!

[/code]

 

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤