예제로 살펴보는 Go : Command-Line Flags

Command Ling Flag는 명령행 프로그램의 옵션을 처리하기 위해서 사용한다. 예를 들어 wc -l에서 -l 이 command line flag다. Go언어는 command line flag의 처리를 위한 flag 패키지를 제공한다.이 코드는 실행 할 수 있지만 아직은 명령행 인자를 받지 못하기 때문에 기본 값만을 출력한다. flag패키지는 stri...

GoLang을 이용한 http client 개발

http client 애플리케이션을 위한 구조체와 함수들은 net/http에서 찾을 수 있다. http.NewRequest("METHOD", "URL", nil) 메서드를 이용해서 요청객체를 만들 수 있다. METHOD는 GET, POST, DELETE, PUT 등을 사용 할 수 있다.요청 객체는 "어느 URL에 대해서 어떤 요청을 하라라는 정보"만 담고 ...

배열 회전

n개의 원소를 가진 배열을 k번 만큼 오른쪽으로 회전하라. 예를 들어 n=7, k=3 이라면, 배열 가 된>다.원본 배열과 동일한 크기의 배열을 만들어서, 순환된 결과를 복사한다. 공간복잡도 O(N), 시간복잡도 O(N)이다.버블소트를 응용해서 공간 복잡도를 O(1)로 줄일 수 있다.공간 복잡도는 O(1)이지만 시간 복잡도는 O(nk)다. 예제의 경우 시간...

역폴란드 표기 수식 평가

를 따르는 수식을 평가하는 코드를 작성하라. 사용 할 수 있는 연산자는 +, -, , /이다. 연산대상으로는 int를 사용 할 수 있다.예제 -> ((2 + 1) 3) -> 9 -> (4 + (13 / 5)) -> 6역폴란드 표기법 자체가 스택에 최적화 돼 있다.코드를 단순화 하기 위해서 에러처리는 하지 않았다....

배열 뒤집기

n개의 원소를 가진 배열을 뒤집는다. n=7 때, 배열 로 회전하기 위한 몇 개의 방법이 있는가.아마도 가장 간단하게 생각 할 수 있는 방법일 것이다. 원본 배열과 같은 크기의 배열을 만들고, 원본 배열의 맨 뒤에서 부터 순환하면서 값을 복사한다. O(n) 공간과 O(n) 시간이 필요하다. O(1) 공간을 사용하는 방법을 찾아보자.O(1)이며 공간 복잡도는...

Golang 에서의 Actor 모델

액터 모델(Actor Model)은 컴퓨터 과학에서 동시성(concurrent)문제를 해결하기 위해서 사용하는 소프트웨어 개발 모델이다. 연극 무대는 여러 액션들이 동시에 일어난다. 감독은 하나 이상의 액터(배우)에게 명령(큐 사인이라고 하던가 연극을 잘 몰라서)을 전달하는 데, 명령을 받은 액터들은 자기의 액션과 대본을 소화한다. 감독은 큐 사인만 내릴 ...

예제로 살펴보는 Go : Variables

Go에서 변수는 명시적으로 선언되며, 컴파일시간에 정확히 선언했는지를 검사하게 된다. 선언하고 사용하지 않은 변수들에 대해서는 경고가 아닌 에러를 발생하며, 컴파일 실패한다.C/C++ 언어와 비교해서 선언 방법에 차이가 있다. C 언어의 경우 int a 와 같이 타입이 먼저 오는데 반해, go는 이름이 먼저오고 그 다음에 타입이 온다. 타입을 검사하는 자바...

예제로 살펴보는 Go : Command Line Arguments

명령행 인자(Command-line arguments)는 프로그램에 데이터를 넘기기 위해서 사용한다. 예를 들어 go run hello.go의 경우 run 과 hello.go 를 go 프로그램의 명령행 인자로 사용하고 있다. os.Args는 슬라이스 자료구조로, 명령행 인자들을 저장한다. 슬라이스의 첫번째에는 명령행 인자가 아닌 실행 프로그램의 이름이 들...

예제로 살펴보는 Go : Line Filters

라인 필터(Line Filters)는 표준입력 혹은 파일로 부터 읽은 데이터를 변형해서 출력하기 위해서 사용한다. grep이나 sed 같은 프로그램들이 전형적인 라인필터 프로그램이다. grep 같은 경우 데이터를 줄 단위로 읽어서 일치하는 문자열이 있으면 출력하고, sed는 문자열을 치환하거나 삭제하는 등의 일을 한다. bufio.NewScanner를 이...

예제로 살펴보는 Go : 파일 쓰기

파일 쓰기도 파일 읽기와 비슷하다.ioutil.WriteFile 메서드로 바이트 데이터를 파일에 저장했다. 데이터의 크기를 알고 있으며, 크기가 별로 크지 않다면 간단하게 사용 할 수 있다. 저수준에서 파일을 쓰려면 os.Create로 파일을 열고, Write, WriteString과 같은 저수준 메서드를 이용해서 쓰기작업을 해야 한다. Sync와 Flus...