GO 언어 익히기

Go 언어는 Strong Type 의 언어이며 문법이 매우 간결한 편이다. 또한 gofmt 와 같은 유틸리티가 기본적으로 내장되어 있어 코드를 일관성 있는 포맷으로 유지시키도록 되어있다.

LiteIDE 의 경우, 심지어 작성중인 코드를 ctrl+S 로 저장함과 동시에 gofmt 가 동작하여 코드를 일관성있는 포맷으로 변경시켜준다. 아키텍트였던 필자에게는 Java 개발 시 PMD 와 Eclipse 의 Formatter 기능을 합쳐놓은듯한 기분이 든다. 

이 강좌는 적어도 한두개 이상의 프로그래밍 언어를 할 줄 아는 사람을 대상으로 하기 때문에 가급적 연산자나 타입의 “의미”에 대해서는 길게 언급하지 않으며 Java, C/C++, JavaScript 와 비교해볼 때 새롭거나 다른 개념이 적용된 부분에 대해 주로 이야기 하도록 하겠다.


Hello World

Fortran, COBOL, Shell Script 까지 포함하여 이 Hello World 를 찍어볼 언어가 몇가지나 되는지 기억도 안날정도이다. 못해도 20여개 이상의 언어로 Hello World 를 찍어본듯하다.
이번에도 또 찍어보자. Hello World 를 찍고 Go 언어에 대해 설명을 들어가보도록 하겠다.

일반 모든 진행은 LiteIDE 를 사용하여 해 나아가므로 화면캡춰를 자주 사용하더라도 양해 부탁한다.

LiteIDE 를 실행한 후 제일 먼저 해주어야 할 것은 바로 GOPATH 를 LiteIDE 에 추가해주는 것이다.
(Windows 버전은 아직 확인을 안해보았지만 Mac OS X 버전의 경우, .app 이 사용하는 환경변수와 Terminal 에서 사용하는 Shell 의 환경변수가 공용하지 않기 때문에 Mac 에서는 GOPATH 를 수동으로 입력해주어야 한다)


메뉴에서 “Manage GOPATH…” 를 누르면 다이얼로그가 뜨는데, 하단부의 “custom Directories” 부분에 원하는 GOPATH 를 추가해준다

GOPATH 가 추가된 모습이다.

File>New… 메뉴를 누르면 New Project or File 다이얼로그가 보인다.
GOPATH: 리스트에서 위에서 추가한 GOPATH 를 “더블클릭” 한다. 그러면 하단의 Location: 부분의 경로가 업데이트 된다.

Template: 에서 Go Source File 을 선택하고, Name 에 HelloWorld 를 입력한다.
Location: 을 $GOPATH/src/HelloWorld 로 입력하고 OK 를 누른다


HelloWorld.go 파일이 자동으로 생성되었지만 좌측 상단의 “1:Folders” 뷰에 아무것도 보이지 않는다.
나중에 설명하겠지만 일단 “Folders” 로 선택되어있는 콤보박스를 눌러 “File System” 으로 다시 선택한다. 그러면 HelloWorld.go 가 보일것이다.


아래는 기본으로 생성된 HelloWorld.go 파일의 코드이다.
// HelloWorld
package main

import (
       "fmt"
)

func main() {
       fmt.Println("Hello World!")
}

package 는 현재 go 파일이 속하는 패키지 이름을 적는다. main 패키지는 특수한 패키지로, 프로그램의 Entry Point 가 되는 main() 함수를 갖는 Entry 패키지임을 지정하는 것이다.

import "fmt" 는 fmt 패키지를 import 한다는 의미이다.
    fmt 패키지는 Formatted I/O 패키지로, C 의 printf 나 println 과 유사한 함수들을 포함한다.

func 함수 선언자이다

CMD+B 를 눌러서 Build 를 해보면, File System Window 에 파일이 하나 추가된것을 볼 수 있다

소스파일이 컴파일되고 실행파일이 빌드되었다. Mac OS X 기준으로 2.1MB 용량의 파일이 생겼다. 
Go 는 VM 자체를 개별 실행파일에 포함하도록 되어있어서 기본적인 Footprint 사이즈가 이정도 나오게 된다.

CMD+R 로 실행을 시켜본다.

하단의 Output Window 에 Hello World! 가 출력됨을 볼 수 있다.


반응형

'Software Development > Go (golang)' 카테고리의 다른 글

3.3 Go - Package  (4) 2016.03.01
3.2 Go - 기본 문법 및 Type  (488) 2016.02.29
2. Go - 개발환경 구성  (458) 2016.02.28
1.3 Go 언어란? - 다른 언어와 비교  (1159) 2016.02.28
1.2 Go 언어란? - 주요 특징  (845) 2016.02.28
블로그 이미지

Good Joon

IT Professionalist Since 1999

,
Go 개발환경 설치는 어렵지 않다. 

우선 Go SDK 를 다운로드 받고, IDE 만 준비되면 된다.

Go 설치
공식 홈페이지인 golang.org 사이트에 가서 자신의 OS 에 맞는 GO SDK 를 다운로드 하고 설치한다.


설치가 완료되면 Terminal (Windows 는 Command Prompt)에서 go version 으로 설치가 잘 되었는지 확인한다.

버전이 보이면 잘 설치된것이다.


▌Lite IDE 설치
이번에는 LiteIDE 를 설치해본다. Source 로 빌드할 수도 있지만 소스를 수정할 일이 없으므로 바이너리를 다운로드 받아 실행해본다.
1. X28 버전 다운로드
2. /usr/local 밑에 압축 풀기
3. LiteIDE.app 실행


▌Workspace 디렉토리 구조
Go 언어는 언어 자체적인 패키지 관리를 한다고 앞서 이야기 하였다. 이런 관계로 Go 는 특정한 구조의 디렉토리와 이러한 디렉토리의 위치를 알기 위한 환경변수 설정이 필요하다.

원하는 Workspace 디렉토리를 결정하고 만든다. 나는 /Users/korean44/src/go_workspace 를 Workspace 로 결정했다.

Workspace 디렉토리는 GOPATH 라는 이름의 환경변수로 정의되어 있어야 go 언어가 이후 개발할 프로젝트에서 import 를 통해 지정한 패키지가 없을 때 GOPATH 에서 찾거나 없는 패키지를 다운로드 받아 $GOPATH/pkg 디렉토리에 저장한다

GOPATH 디렉토리의 구조는 아래와 같다.

우리가 myproject 를 만든다면 위 처럼 GOPATH(Workspace)/src 밑에 프로젝트를 만들면 된다.
GOPATH 를 Workspace 로 볼 수도 있지만, 단일 Project 를 GOPATH 로 잡을 수도 있다. 그러면 해당 프로젝트의 구조가 저렇게 bin, pkg, src 처럼 정형화 되어 깔끔해질 수도 있다.

▌환경변수

위에서 GOPATH 환경변수가 필요하다는 것을 알았으므로 일단 .profile 이나 windows 의 경우 환경변수를 편집하여 GOPATH 변수를 추가해준다.

go 와 관련된 환경변수는 go env 를 실행하면 출력된다
macbook-joon:go_workspace korean44$ go env
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/korean44/src/go_workspace"
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
GO15VENDOREXPERIMENT="1"
CC="clang"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics 
            -Qunused-arguments -fmessage-length=0 -fno-common"

CXX="clang++"
CGO_ENABLED="1"
macbook-joon:go_workspace korean44$ 

이중에
$GOROOT : go 가 설치된 경로
$GOPATH : 위에서 설명한 GOPATH. Workspace 로 이해가 편하도록 설명하였으나 사실은 Dependency 관리를 위해 참조할 pkg, src 디렉토리와 go install 시에 실행파일을 위치시킬 bin 디렉토리를 포함하는 지정 구조의 디렉토리 루트가 필요해서 지정하는 것이다.

반응형
블로그 이미지

Good Joon

IT Professionalist Since 1999

,
Go 로 응용프로그램을 개발하기 위해서는 일단 Go SDK 를 설치하여야 한다.
그후 개발자라면 고민하게 될 것은 바로 IDE 이다. 

Go SDK 와 텍스트 편집기만 있으면 개발 가능하다고 Golang 사이트에서는 이야기 하지만 사실 어떤 언어이건 텍스트 에디터만 있으면 개발되지 않는 언어가 어디있겠는가? 하지만 디버깅을 하고 파라미터 정보를 보여주고 Definition 이나 Reference 를 보여주는 등의 기본적인 개발지원 기능이 있는 IDE 가 없다면 어떠한 개발자라도 왠만한 이유 아니면 그 언어로 개발하려고 하지 않을것이다.

Go 언어는 아직 나온지 얼마 안된 언어인 탓에 Go 언어를 지원하는 제대로된 IDE 는 아직 그리 많지 않은편이다 (Java 나 C/C++ 의 IDE 들은 정말이지 아직 Go 의 IDE 들에게는 넘사벽이다)

Cloud 에디터, 텍스트 편집기의 Syntex Highlight 플러그인을  제외한 Go 언어를 위한 대표적인 설치형 IDE 는 아래와 같다.

Eclipse - GoClipse : Eclipse 의 플러그인
GoWorks - Netbeans 의 플러그인이나 Netbeans 기반의 Standalone 형태로 사용
IntelliJ IDEA - IntelliJ IDEA 용 플러그인
LiteIDE - Go 언어 전용의 IDE 로, Go 언어 릴리즈 초기부터 함께한 IDE
Visual Studio - Visual Studio 용 플러그인
그외에 상용 IDE 로는, KomodoIDE, Zeus 등이 있음

위 IDE 들 중 빠르고 깔끔한 LiteIDE (크로스플랫폼지원)를 Go 개발자들이 가장 많이 사용중이므로 본 강좌에서도 이 IDE 를 기준으로 하도록 한다.

Lite IDE 중에서도 Mac 버전을 기준으로 하겠으나, 어차피 Qt 기반의 UI 이므로 UI 구성은 Windows 나 Mac 이나 Linux 나 유사하여 다른 플랫폼에서도 큰 문제없이 이해가 가능할것이다.
(사실 Windows 에서 주로 작업하지만 당분간 노트북으로 글을 써야하는 상황에 노트북이 맥북 밖에 없다)

반응형

'Software Development > Go (golang)' 카테고리의 다른 글

3.2 Go - 기본 문법 및 Type  (488) 2016.02.29
3.1 Go - Hello World  (5) 2016.02.29
1.3 Go 언어란? - 다른 언어와 비교  (1159) 2016.02.28
1.2 Go 언어란? - 주요 특징  (845) 2016.02.28
1.1 Go 언어란? - History  (518) 2016.02.27
블로그 이미지

Good Joon

IT Professionalist Since 1999

,