Golang으로 CleanArchitecture의 usecase부를 설치해보도록 하겠습니다.
6020 단어 CleanArchitectureGo
청결 체계 구조 번역
지금 가장 설레는 건 스칼라예요. 그래서 스칼라에 초소박하게 설치하면 이런 느낌이겠죠.
scala
trait InputPort[I, O] {
def run(param: I, outputPort: OutputPort[O]): Unit = outputPort.run(doRun(param))
protected def doRun(param: I): UseCaseResult[O]
}
trait OutputPort[T] {
def run(usecaseResult: UseCaseResult[T]): Unit
}
type Errors = List[String]
type UseCaseResult[O] = Either[Errors, O]
특히 이 InputPort에서 만든 template method 부분을 golang으로 쓰면 어떻게 해야 할지 금방 생각이 안 나서 해봤어요.이런 느낌인가요?
go
package usecases
type InputPort struct {
Interactor Interactor
}
func (inputPort InputPort) Run(param interface{}, outputPort OutputPort) {
outputPort.Run(inputPort.Interactor.Run(param))
}
type Interactor interface {
Run(param interface{}) UseCaseResult
}
type UseCaseResult struct {
Value interface{}
Error error
}
type OutputPort interface {
Run(result UseCaseResult)
}
추적:그래도 될 것 같아서요.
go
type InputPort interface {
Run(param interface{}) UseCaseResult
}
type OutputPort interface {
Run(result UseCaseResult)
}
func Run(param interface{}, inputPort InputPort, outputPort OutputPort) {
outputPort.Run(inputPort.Run(param))
}
Reference
이 문제에 관하여(Golang으로 CleanArchitecture의 usecase부를 설치해보도록 하겠습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mtoyoshi/items/17917215b9be861fd8af텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)