[Go] 1. Golang 소개

garam0410·2021년 3월 31일
0

Golang

목록 보기
1/6
post-thumbnail

Golang 탄생

google이 개발한 오픈소스 언어로, 2009년에 공개되었다.
로버트 그리즈머, 롭 파이크, 케네스 톰슨이 만들었는데, 세사람 모두가 C++의 복잡함이 싫어서 Go를 만들었다고 한다. 지금도 패키지에 무엇을 포함할지는 세사람이 만장일치가 되어야 이루어 진다고 한다.

Go 언어 사용자들을 고퍼(Gopher)라고 부르며, 연례행사인 고퍼콘(Gophercon)이 세계 각국에서 매년 열리고 있다.

초기 Go 컴파일러는 C언어로 작성되어 있었다. 후에 2015년 8월, Go의 1.5 버전에서는 Go 컴파일러가 C가 아닌 Go로 작성되었다. 후에 컴파일 속도 개선, 퍼포먼스 향상, HTTP 지원, 가바지 컬렉션 등의 업데이트가 계속해서 이루어 졌다.

Golang 장점

컴파일러의 컴파일 속도가 매우 빨라 인터프리터 언어처럼 쓸 수 있다.
하지만, 컴파일러의 태생적인 한계를 극복한 것은 아니기 때문에, 인터프리터 언어와 비교하면 확실히 느리겠지만, 컴파일 언어와 비교했을시, 확실히 퍼포먼스가 좋다.

간결하게 코드를 작성할 수 있으면서도 풍부한 라이브러리 덕택에 막강한 기능을 쉽게 구현할 수 있다

Golang 단점

바이트 코드를 생성하는 언어가 아니므로, 바이너리만 배포할 경우 C/C++ 프로그램처럼 해당 환경에 맞춰서 컴파일 해줘야한다. 그렇게 하지 않는다면, 소스코드를 통째로 배포해야한다.

원래 목적은 시스템 프로그래밍 언어 이지만, 가비지 컬렉션의 지원이나 제네릭의 부재로 인한 박싱/언박싱이 불필요하게 일어나는 등 C/C++을 대체할 수 있는 언어는 아니라는 것으로 말하고 있다. 실제로 고성능 연산에 사용하기에는 C/C++에 비해 느리고, 저수준 시스템 개발에서는 가비지 컬렉션과 고루틴을 지원하기 위한 무거운 런타임 등으로 인해 사용이 불가능에 가깝다. 그래서 개발 속도와 실행 속도, 병행성 사이의 적정 지점이 필요한 서버 애플리케이션 개발에 많이 사용된다.

사례

  • Docker, Kubernetes

  • Dropbox, Cloudflare, SoundCloud, Netflix 의 기능들 중 상당수를 Go를 이용해 바꿈

  • Twitch

  • NewYork Times의 Gizmo API 서비스

  • Discord 클라이언트단 언어 (2020)


개발 환경

Go 설치

아래 다운로드 버튼을 누르고 설치파일로 설치를 진행해 준다.

Golang 다운로드

Golang을 설치했다면, 잘 설치 됬는지 확인해본다.
Win + R 을 누르고, go version을 타이핑 해본다.

아래처럼 나온다면 성공이다.

여기서 끝이 아니고, 환경 설정도 해주어야 한다.

보면, GOPATH 라는게 있는데, Go에서 이 경로에 폴더를 만들어주지는 않기 때문에, 직접 폴더를 생성해 주어야 한다.

현재 go라는 폴더가 없기 때문에,

mkdir go

를 입력후, 폴더를 생성해 준다.

Go에 대한 설치는 이것으로 끝났다.

Visual Studio Code 설정

Visual Studio Code 다운로드

Visual Studio Code는 설치되어 있다는 가정으로 진행한다.

폴더 열기를 누르고, 아까 확인했던 GOPATH 경로에 있는 go 폴더를 불러온다.

Go 폴더에 src폴더를 생성하고, 그 안에 hello 폴더를 또 생성한다.
그리고 hello.go라는 파일을 생성하게 되면, 우측 아래에 설치해야하는 것들이 나오는데, 모두 설치해준다. 나오지 않는다면 아래처럼 직접 설치를 해준다.


확장 프로그램에서 Go를 설치해 준다.

설치가 완료되면 위와 같은 콘솔이 나오게 된다.

여기까지 Go를 사용할 환경이 모두 완성 되었다.

Hello World!

hello.go

package main

import "fmt"

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

위 코드를 작성하고 실행하면, 나는 다음과 같은 에러를 확인할 수 있었다.

자세한건 더 알아봐야겠지만, go.mod 파일을 생성해주면 된다는 말이기에, 해당 파일을 생성해주는 명령어를 찾았다

go mod init [directory]

참고 : https://golang.org/doc/code#GOPATH

그래서

go mod init src/hello

를 수행해주고, 만들어진 go.mod 파일을 hello 폴더에 넣었다.
그리고난 뒤, 다시 실행시켜주면

제대로 나온것을 확인할 수 있었다!!

0개의 댓글