SharedMap 정의
먼저 다음과 같이 SharedMap과 command 구조체를 정의했다.
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 필드를 정의했다. key와 value, 수행할 액션을 나타내는 action을 command 구조체에 담아 채널로 전달하고, 처리 결과는 command 구조체의 result 채널로 확인한다. result는 결과를 전달하기 위한 용도로만 사용할 것이므로 송신 전용 채널(chan<-)로 정의했다.

command의 action으로 사용할 값은 다음과 같이 상수로 정의한다.
const ( set = iota get remove count )
SharedMap에서 처리할 수 있는 액션은 set, get, remove, count이다.