2010-09-17 2 views
14

이 문제는 매우 일반적입니다. 어떤 이벤트가 발생하면 개체가 모든 구독자에게이를 알립니다. C++에서는 boost::signals 또는 다른 것을 사용할 수 있습니다. 하지만 Go 언어로 어떻게해야합니까? 몇 가지 객체가 게시자와 프로세스 통지에 가입되어있는 작업 코드 예제를 보는 것이 좋습니다.Go 언어의 옵저버 패턴

고마워요.

답변

14

이것은 실제로 실제로 매우 간단합니다. 채널을 사용하십시오. 이것은 그들이 만들어내는 종류의 것입니다.

분명히 이것은 작동 코드 샘플이 아닙니다. 그러나 그것은 가깝습니다.

+1

채널 작동을 차단하는 데주의하십시오. –

+0

물론 @MizardX는 일반적으로 chan bool처럼 chan을 제어하고 select {}를 사용하고 제어 채널에서 recv를 종료합니다. 그러나 그것은 모든 것이 아주 사소하고 기본 예제에서는 약간 과장합니다. – cthom06

+1

@MizardX : C에서 포인터 연산에주의해야한다고 생각하지 않습니까? 채널에주의하면 Go 프로그래밍의 90 %가됩니다 .-) –