Useful GO coding pattern
프로그래밍 언어 GO 작성 시 유용한 패턴에 대해 공유한다. 1. Broadcasting with observer pattern c.incomingMsgChan 으로 모든 채널의 메세지가 들어올 때, range와 case를 사용하여 선택적으로 listening함으로써 간단하게 observer pattern을 구현할 수 있다. for msg := range c . incomingMsgChan { select { case c . memoryMsgChan <- msg : default: } } 2. Cleanup with signal Graceful shutdown을 위한 flow control 구현 시 GO의 channel을 이용하면 간단하게 구현할 수 있다. func work() { exitChan := make( chan int ) go task1(exitChan) go task2(exitChan) time . Sleep(5 * time . Second) close(exitChan) } func task1(exitChan chan int ) { <- exitChan log . Printf("task1 exiting") } func task2(exitChan chan int ) { <- exitChan log . Printf("task2 exiting") } 3. Superloop considering cleanup 2.를 실제 시스템에 적용할 때 Superlo...