[Go] Go 언어 소개와 설치 및 컴파일 방법
(Go 언어 버전 : 1.13.7, 글쓴날 : 2020.02.12)
* 이 글은 글쓴이가 공부한 내용을 정리하며 올리는 글입니다.
1. Go 언어 소개
1) Go 언어란?
Go 언어는 2009년 구글(Google)에서 개발된 언어로(출시는 2012년) 로버트 그리즈머(Robert Griesemer), 롭 파이크(Rob Pike), 켄 톰슨(Ken Thompson) 이렇게 세 분이서 인페르노라고하는 운영체제와 관련된 작업을 하다 탄생했습니다.(C++이 복잡해서 이참에 새로 Go 언어를 만드셨다고..)
찾아보니 위의 세 분 모두 다 어마 무시한 분들이십니다. (역시 구글 개발자 셔서 그런가...)
* 궁금하신 분들을 위해 간단 요약
로버트 그리즈머(Robert Griesemer) : 구글 크롬 V8 자바스크립트 엔진 개발에 참여(그 유명한 Node.js를 빌드 한 엔진이 V8입니다.)
롭 파이크(Rob Pike) : 분산 OS인 Plan 9 개발, 켄 톰슨과 함께 UTF-8을 만든 개발자
켄 톰슨(Ken Thompson) : 미국 컴퓨터공학의 개척자, Unix OS를 설계 및 구현(헐...??), C 언어의 전신인 B 언어를 개발
아직도 Go 언어 업데이트 시 패키지를 추가할 때 세 분이 만장일치여야 등록된다고 하며,
이렇게 훌륭하신 개발자분들이 만드신 언어답게 요새 들어 급격히 성장하고 있는 개발 언어입니다.
* 글 쓴 날 기준으로 TIOBE 지수에서 어느새 10위권을 바라보고 있습니다. (예전에 봤을 때 한참 아래에 있었는데...)
현재 Back-End에서 Go 언어는 전 세계적으로 그 능력을 인정받아 해외에서는 이미 널리 쓰이고 있으며, Front-End에서도 차후 Android와 iOS에서 Go 언어로 앱 제작을 할 수 있도록 적용 중이라고 합니다. (Flutter는 어쩌고???)
* Go 언어를 실제로 사용 중인 기업 (이외에도 도커(Docker), 이더리움(Ethereum) 등 수많은 곳에서 사용 중입니다.)
또한, 해외에서는 Go 언어 개발자를 고퍼(Gopher)라고 부르며, 고퍼분들을 위한 고퍼콘(Gophercon) 또한 매년 세계 각지에서 열리고 있습니다.
* Gophercon 공식 홈페이지 : Gophercon 공식 홈페이지
* Go 언어의 공식 캐릭터입니다. (귀엽다고 해야 하나......)
2) Go 언어의 특징
그렇다면 Go 언어의 특징은 무엇일까요?
이제부터 알아보도록 하겠습니다!
(1) 컴파일 언어
요즘 대세인 Python, JavaScript와 같은 인터프리터 언어와 달리 컴파일 언어입니다. 물론 두 가지 방식 모두 나름의 장단점이 있지만 저 같은 경우 컴파일을 거침으로써 에러의 굴레에서 조금이라도 벗어날 수 있다면 정말로 대환영입니다!
(2) 정적 타입과 강 타입 언어
두 번째 특징 또한 위와 비슷한데요 Python, JavaScript와 같은 동적 타입 언어와 달리 Go 언어는 정적 타입이어서 형태에 따른 자료형을 명시해야만 하며, 특히 C 언어와도 다르게 강 타입을 지향해서 묵시적 형 변환 또한 허용하지 않는 것이 특징입니다.
(3) 가비지 컬렉션
최신 언어 답게 가비지 컬렉션(Garbage Collection)을 제공하여 개발자의 피로도를 극도로 상승시키는 C, C++의 포인터 메모리 해제의 스트레스에서 벗어나실 수 있습니다... (free() 지옥 탈출!)
(4) 병행성(Concurrency)
Go 언어에는 병행성(Concurrency)을 제공해주는 고루틴(Goroutine)이라는 개념이 존재합니다. go라는 키워드를 사용해 여러 개의 함수를 동시에 실행할 수 있으며, 이는 OS의 커널에서 자원을 소모하여 직접 스레드를 생성하지 않고 Go 언어 자체적으로 적당한 스레드를 생성해 고루틴을 처리하므로 OS의 부담이 줄어들게 됩니다.
(5) 멀티 코어 지원
현재 CPU의 트렌드에 맞게 멀티 코어 환경을 지원하며 위에서 설명드린 고루틴(Goroutine)간에 채널을 이용하여 데이터 통신을 합니다. 기존의 멀티 스레드와 비슷하며 방식 또한 동기화와 비슷합니다.
(6) 단순함
Go 언어의 철학은 단순함과 실용성입니다. 그에 따라 다른 언어들에 흔히 있는 메커니즘인 예외(Exption), 클래스(Class), 제네릭(Generic)과 같은 개념들이 없습니다.
키워드 또한 25개로 여타 언어에 비해 확실히 적은 것을 확인하실 수 있습니다.
* Go 언어 키워드
break | default | func | interface | select |
case | defer | go | map | struct |
chan | else | goto | package | switch |
const | fallthrough | if | range | type |
continue | for | import | return | var |
* Go 언어의 특징을 Let It Go로 패러디한 영상 (너무 웃겨서 가져와봤습니다. ^^)
2. Go 언어 설치 및 컴파일 방법
1) Go 언어 설치
* Go 언어 공식 다운로드 페이지 : Go 언어 공식 다운로드 페이지
위의 공식 다운로드 페이지로 들어가시면 각 OS 별로 설치 파일이 준비되어 있습니다.
(1) Windows
Microsoft windows라고 적혀있는 버튼을 클릭하시면 .msi 파일이 다운로드됩니다.
다운로드가 완료되시면 실행하셔서 Next 몇 번 누르시고 Install 누르시면 설치가 완료됩니다.
(Windows의 경우 .msi 파일이 환경 변수를 자동으로 잡아줘서 설치가 매우 간단합니다.)
(2) macOS
Apple macOS라고 적혀있는 버튼을 클릭하시면 .pkg 파일이 다운로드 됩니다.
다운로드가 완료되시면 .pkg 파일을 실행하셔서 차례로 Continue, Install 누르시면 설치가 완료됩니다.
(macOS의 경우도 Windows와 마찬가지로 환경 변수를 자동으로 잡아주기 때문에 설치가 간단합니다.)
(3) Linux
Linux라고 적혀있는 버튼을 클릭하시면 .tar.gz 압축 파일이 다운로드 됩니다.
다운로드가 완료되시면 터미널을 여신 뒤 다운로드 폴더로 들어가셔서
tar -C /usr/local -xzf go1.13.7.linux-amd64.tar.gz
위의 명령어를 입력합니다.
(글 쓴 날 기준으로 1.13.7버전이며, 이 글을 보고 계신 시점에 따라 버전이 다를 수 있으니 tar 명령어 입력 후 go까지 치시고 탭을 누르셔서 다운로드하신 압축파일명을 자동완성하시길 바랍니다.)
그 후,
sudo vi /etc/profile
명령어를 입력하셔서 profile 파일을 여신 후 맨 마지막 줄에
export PATH=$PATH:/usr/local/go/bin
PATH를 입력하여 환경 변수를 추가해 주신 후
source /etc/profile
명령으로 스크립트 변경사항을 적용하시면 설치 완료입니다!
(혹시 개인 사용자별로 환경 변수 설정을 하시고 싶으신 분들은 ~/.bashrc 등에 환경 변수 설정해주시면 되겠습니다.)
2) Go 언어 컴파일 방법
Go 언어로 작성된 프로그램의 확장자는 .go 입니다.
컴파일을 해보기 위해 만국 공통 모든 언어의 시작 프로그램인 Hello, World! 출력 프로그램을 작성해 컴파일 해 보겠습니다.
* Go 언어 Hello, World! 예제
1
2
3
4
5
6
7
|
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
|
위의 예제 코드를 hello.go(원하시는 이름) 파일로 저장하신 후,
go run hello.go
파일이 저장된 곳에서 go run 파일명 명령을 실행하시면 화면에 Hello, Wolrd!가 출력되는 걸 보실 수 있습니다.
위의 명령은 .exe를(실행파일) 생성하지 않으므로, 혹시 .exe를(실행파일) 만드시고 싶으신 분들은,
go build hello.go
위의 go build 파일명 명령을 사용하시면 hello.exe 실행파일을 생성하실 수 있습니다.
여기까지 Go 언어의 소개와 설치 및 컴파일 방법에 대해 알아보았습니다.
현재 저도 Go 언어를 공부 중이어서 계속 공부하는 데로 정리하여 글을 쓸 예정입니다.
당연하게도, 아직 미숙하고 잘 모르는 것들이 많지만 정리해 놓은 이 글이 누군가에게 도움이 되었으면 좋겠습니다.
Go 언어에 대해 더 궁금하신 것들이 있으신 분들은...
* Go 언어 공식 홈페이지 : Go 언어 공식 홈페이지
위의 Go 언어 공식 홈페이지를 참조하시면 되겠습니다.
감사합니다!
'Deprecated' 카테고리의 다른 글
[Python] Python 소개와 설치 방법 (4) | 2020.02.14 |
---|---|
[Go] Go 언어 예제와 기본 문법 정리 1탄(패키지, 임포트와 익스포트, 세미콜론, 주석) (0) | 2020.02.13 |
[Node.js] PM2 소개와 설치 및 사용법 (0) | 2020.02.11 |
[Node.js] npm 소개와 설치 및 사용법 (3) | 2020.02.10 |
[Node.js] 무료 SSL 인증서 적용 및 HTTPS 서버 구축 방법 (0) | 2020.02.09 |