예제로 살펴보는 Go : 타이머

Go에서 제공하는 time 패키지의 NewTimer메서드를 호출하면, 채널을 반환한다. NewTimer는 설정된 시간이 지난 후 채널에 메시지를 보내는데, 이를 이용해서 타이머를 구현 할 수 있다. 2초 후에 메시지를 전달하는 채널 데이터 timer1을 만들었다. 이 코드는 <-timer1.C에서 블럭된다. 2초 후 타이머가 작동해서 메시지를 수신하면 블럭...

예제로 살펴보는 Go : Range over Channels

for & range 를 이용해서 채널을 체크 할 수 있다.string 메시지타입의 크기가 2인 채널을 만들었다. 여기에 두 개의 메시지를 전송하고 채널을 close 했다. 채널을 close 한다고 해서 즉시, 채널을 close하는 건 아니다. 채널이 비워진 후에 비로서 close 된다. for & range 문을 이용해서 채널로 부터 메시지를 읽는다. 채...

예제로 살펴보는 Go : 채널 닫기

채널을 이용해서 worker 고루틴에 작업 메시지를 보낸다고 가정해 보자. 만약 더 이상 작업이 없다면, worker고루틴을 종료해야 할 것이다. 이를 위해서 worker는 더 이상 메시지가 없음을 측정 할 수 있어야 한다. 아래 예제를 보자.예제 프로그램의 main() 고루틴은 jobs채널을 이용해서 worker 고루틴과 통신을 한다. main 고루틴은 ...

예제로 살펴보는 Go : Non-Blocking 채널 사용

Go의 채널은 기본적으로 블럭킹(Blocking)모드로 작동한다. 하지만 select 의 default문을 이용해서 논 블록킹 채널을 구현할 수 있다. 논 블럭킹 채널을 이용하면 두 개 이상의 selects를 기다릴 수 있다.9~15 줄을 보자. message 채널에서 메시지를 기다리고 있다. 원래대로라면 메시지를 기다리면서 블럭돼야 겠지만, default...

Array, Slice, Map

Array, Slice, MapGo 언어는 Number, String, Boolean의 기본 타입외에, 배열(array), 슬라이스(slice), 맵(map)와 같은 추상화된 데이터 타입을 지원한다. 배열은 동일한 형식의 데이터들의 연속으로 구성된, 데이터 형식이다. Go 배열은 다음과 같이 선언한다. var x int5개의 int형 데이터를 저장할 수 ...

Go - Concurrency

Go - Concurrency개념적으로 고루틴(Gorutines)은 thread, coroutines, processes 등과 혼동될 수 있다. 용어에 따른 개념의 혼란을 피하기 위해서 "고루틴"이라는 새로운 용어를 만들었다고 한다. 실제 사용하다보면, 멀티 스레드, 멀티 프로세스 등과 비슷하면서도 해석과 사용에 미묘한 차이가 있음을 알 수 있다. 고루틴...

Function

Function함수는 독립적으로 실행할 수 있는 코드로 입력을 받아서 처리하고 출력하는 일을한다. 프로시져(procedures)이나 서브루틴(subroutin)이라고 부르기도 한다. 함수는 종종 블랙박스로 표현한다. Go에서 가장 유명한 함수는 아마도 main 함수일 것이다. 독립적으로 실행되는 모든 go 프로그램은 반드시 하나의 main 함수를 포함해야...

Go HTTP 패키지 성능 측정

Go HTTP 패키지 성능 측정메시지 드리븐 방식의 웹 기반 API 서버를 개발해야 하는 요구 사항이 생겼다. 백엔드는 등의 고성능 소프트웨어(혹은 프로토콜을 사용하는)로 구성할 계획이라서, 웹 API 서버가 버틀랙이 될 것으로 예상하고 있다. 요즘에는 AWS로 인프라를 구축하고 있는데, 성능은 scale-out으로 해결한다는 기본 방향을 가지고 있다. ...

Go를 이용한 객체지향 프로그램 개발

Go를 이용한 객체지향 프로그램 개발Go 언어는 클래스와 객체를 가지고 있지 않다. 클래스와 객체를 가지고 있지 않아도 객체지향 프로그래밍 언어라고 할 수 있을까 ? "객체지향"은 일종의 소프트웨어 개발 방법론으로 언어의 종류와는 상관없다. 예컨데, 절차지향 언어라는 C 언어로도 객체지향적인 프로그래밍이 가능하다. C로 구현한 GUI 툴킷인 GTK의 경우...

Go maps in action

Go maps in action해시 테이블(hash table)는 컴퓨터 과학에서 가장 많이 사용되는 자료구조 중 하나다. 많은 종류의 해시 테이블 구현이 있고, 이들 마다 기능이 다르긴 하지만 fast lookups, add, delete는 공통으로 가지고 있다. Go는 해시 테이블의 구현인 map 타입을 내장하고 있다. Go map 타입은 다음과 같은...