Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Archives
Today
Total
관리 메뉴

Code Habit

Golang 특 징 본문

카테고리 없음

Golang 특 징

코드베어 2020. 5. 6. 09:44

Go 언어의 문법은 C언어를 기반으로 하고 있으며, C++의 복잡한 문법 대신 간결한 문법을 추구하고 있다. Go 언어의 특징은 다음과 같다.

 

정적 타입, 강 타입

Go 언어는 자료형을 컴파일할 때 결정하는 정적 타입의 언어이고, 컴파일 또는 실행할 때 암시적 형변환이 일어나지 않는 강타입 언어이다. (동적타입 언어로는 Python, Ruby, JavaScript등 스크립트 언어들이 있고 정적 타입 언어로는 C, C++, JAVA, C# 등이 있다.)

 

컴파일 언어

Go 언어는 텍스트 형태의 소스 코드를 컴파일하여 기계어 형태로 된 실행 파일(바이너리)를 만들어낸다. 실행파일은 CPU에서 바로 실행되기 때문에 속도가 빠르고 간결한 것이 장점이다. 그리고 실행을 위해 덩치가 큰 가상 머신을 설치하지 않아도 되므로 실행 환경이 복잡하지 않다.

 

가비지 컬렉션

Go 언어는 메모리를 관리해주는 가비지 컬렉터가 실행 파일 안에 내장되어 있다.

 

병행성

Go 언어는 go 키워드를 통해 함수 여러 개를 동시에 실행할 수 있다. 이렇게 실행된 함수를 고루틴이라고 하는데 Go 언어는 적정량의 스레드를 생성해서 고루틴을 처리한다. 또한 최대 프로세서(코어) 개수 설정에 따라 멀티코어도 지원된다.

Go 언어는 채널을 이용하여 고루틴끼리 통신할 수 있다.

 

모듈화 및 패키지

Go 언어는 언어 자체에서 모듈화를 제공하며 인터넷에 있는 소스 코드를 바로 가져와서 사용할 수 있다. 그리고 다양한 패키지 관리 도구로 패키지 간 의존성을 쉽게 관리할 수 있다. import 키워드로 저장소 주소만 지정한 뒤 go get, go install 명령을 사용하면 Git, Mercurial, Subversion, Bazaar로 GitHub, BitBucker, Launchpad, IBM DevOps Services에서 자동으로 소스 코드를 가져온다.

 

컴파일 속도

Go언어는 C, C++와는 달리 헤더 파일이 없고, 소스 코드를 패키지화하여 변경된 부분만 컴파일하므로 컴파일 속도가 빠르다. 또한 문법적으로 복잡한 요소를 최대한 줄여 컴파일 속도에 유리하게 설계되었다.

 

클래스 x

Go언어는 클래스가 없다. 대신 구조체와 메서드를 이용하여 비슷하게 구현할 수 있고 interface를 이용하여 다형성을 구현 할 수도 있다.