https://github.com/Seseong-Jang/simple_go_tcp_chat
튜토리얼 한 번 쭉 해보고, 이틀정도 걸려서 만들면서 느낀거지만.
고루틴이랑 채널의 연계는 어마어마한것 같다.
이것만으로 멀티쓰레드 형태의 프로그램이 가능하다니;;
단점은, 이건 C에서도 그랬었겠지만 string compare가 불편하고, string concat도 불편하다;
하지만 대안으로 go에서 패키지 형태로 지원하는게 있어서 다행임.
string concat은 bytes.Buffer의 writeString으로 처리하고,
compare는 strings 패키지를 이용하여 처리하였음. (물론 native로 구현하는게 넘사벽으로 빠르다고하긴함)
list같은 경우에도 iteration하면서 안에 값을 변경하면 list안에 들어있는 값도 변경될줄 알았는데
변경이 안되던.. 난 분명히 포인터로 집어넣었는데;; pushBack하는 순간의 객체 상태만 유지한다.
변경이 필요없이 유지해야할 정적인 항목들을 이용할 때만 사용해야 될 것 같다.
메소드에서 nil (go에서 null이라 칭하는) 반환도 안된다!
그래서 리턴 값이 객체라면 생성자 한번 돌려서 이상한 값들 넣은다음에 예외처리할 때 그 값으로 활용해야함.
하지만, strings의 hasPrefix이 함수는 정말 맘에든다.
전체 채팅, 귓속말, 채널 채팅, 닉네임 중복 유저 접속 차단 정도의 기능만 구현되어 있음.
'개발 > Go' 카테고리의 다른 글
[Go] func 가변인자(dynamic arguments) 전달 (0) | 2016.06.28 |
---|---|
[Go] XML Marshal / UnMarshal (0) | 2016.06.28 |
[Go] SyntaxHighlighter (0) | 2016.06.28 |
[Go] LumberJack for Logging (0) | 2016.06.28 |
[개발환경] Go + SubLimeText 3 + GoSublime (0) | 2016.06.11 |