marshal / unmarshal – encode / decode에 대한 go의 개념들
Marshal 이란?
구조체 또는 객체의 데이터를 json으로 byte[]로 만드는 것이 json.Marshal의 역할입니다. 여기까지는 그냥 string이며 http상에서는 문서로써 바로 전달이 가능하지요. http상에서는 모든게 문서이니깐요 🙂
(marshalling의 원래의미 – 군대에서 준비태세를 갖추는것을 말하는 것인데, 네트워크-전쟁으로 나아가기 전에 어떤 포멧- 무기로 싸울지 준비태세를 갖추는 것으로 이해하면 됩니다)
Serialization 이란?
하지만 일정한 크기로 잘게 나누어서 물 흐르듯이 계속 보내기 위해서는 stream 형태로 전달할 필요가 있습니다. node.js가 서버 사이드 언어이므로 최상위 객체 EventEmitter바로 밑에 stream 으로 흐르게 딱 박혀있습니다 (왜 갑자기 node.js 이야기를 하냐면 stream이 그만큼 서버 사이트 프로그래밍에 중요하다는 의미이고 node.js 도 stream 형태로 데이터를 전송하는 것이 기본 골격이라는 의미입니다)
golang에서는 Encode (Serialization) 라 불러주세요
golang에서는 serialization, 즉 byte[] 데이터를 stream화 하는 녀석의 이름이 encode라고 부르네요.

json.Marshal , Encode 의 개념도