더북(TheBook)

SharedMap 정의

먼저 다음과 같이 SharedMapcommand 구조체를 정의했다.

type SharedMap struct {
    m map[string]interface{} // 실제 값이 저장될 맵
    c chan command           // ShardMap에 명령을 전달하기 위한 채널
}
 
type command struct {
    key    string             // 키
    value  interface{}        // 값
    action int                // 수행할 액션
    result chan<- interface{} // 액션 처리 결과
}

SharedMap 내부에는 실제 맵 정보를 가리키는 m map[string]interface{} 필드와 채널을 통해 SharedMap에 명령을 전달하기 위한 c chan command 필드를 정의했다. keyvalue, 수행할 액션을 나타내는 actioncommand 구조체에 담아 채널로 전달하고, 처리 결과는 command 구조체의 result 채널로 확인한다. result는 결과를 전달하기 위한 용도로만 사용할 것이므로 송신 전용 채널(chan<-)로 정의했다.

그림 5-2 SharedMap 동작 방식

commandaction으로 사용할 값은 다음과 같이 상수로 정의한다.

const (
    set = iota
    get
    remove
    count
)

SharedMap에서 처리할 수 있는 액션은 set, get, remove, count이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.