앞서 소개 글에서 언급하였듯,
Go 언어의 대표적인 특성 중 핵심은
정적타입 이면서 강타입 이라는 것에 있다.
프로그래밍 언어에서 타입이란, 자료형을 의미한다.
정적 타입 vs. 동적 타입
프로그래밍 언어는 바인딩 시기에 따라, 정적 타입과 동적 타입으로 나뉜다.
정적 타입 언어는 자료형을 지정하여, 컴파일 시에 변수의 형이 결정되는 언어이다.
ex) C, C++, JAVA, C# 등
//C++
int num1 = 3;
float num2 = 4.6f;
double num3 = 3.23d;
char ch = 's';
string str = "abc"
string str_test = 1.2f; //컴파일 에러(자료형)
//컴파일 시 자료형 결정
변수를 선언할 때, 반드시 앞에 타입을 명시해야 하는 언어들은 모두 이 정적 타입에 속한다.
C언어나 JAVA에서 익히 봤다시피,
정수(int), 실수(float, double), 불(boolean), 문자열(string) 등의 자료형을 미리 지정한다.
이를 통해, 컴파일 시에 잘못된 자료형으로의 대입이나 연산 등의 오류를 미리 체크할 수 있다. (안정성)
런타임에서는 정해진 자료형에 의해 처리만 하기 때문에, 속도와 효율성 측면에서 유리하다.
반면,
동적 타입 언어는 자료형의 지정 없이 런타임(실행 시간) 시에 변수의 형이 결정된다.
ex) Pyhon, Ruby, JavaScript 등
#Python
num1 = 12
num2 = 1.2
str = "Hello world!"
#자료형을 작성하지 않는다.
이런 특징으로 인하여, 실행시켜 보기 전에는 자료형에서 비롯되는 오류를 검출하기 어렵다.
예를들면, Python을 사용하다보면
실행 도중에 변수에 예상치 못한 값이 들어와 Type Error에 의해 프로그램이 종료되는 경우가 빈번하게 발생한다.
또한 런타임 시 자료형을 결정하는 데에 소요되는 time에 의하여,
정적 언어에 비해 처리 속도 면에선 다소 불리하다.
그러나 코드 구현 시 자료형을 일일이 지정할 필요가 없어, 유연하고 빠르게 코딩이 가능하다.
마성의 언어 Go
정적타입과 동적타입의 차이에 대해 알아보았다.
그럼 Go는 어떻게 이루어져 있는지가 궁금할텐데,
찬양하라Go!
다 된다Go!
Go는 정적타입이지만, 동적타입 방식의 선언을 지원한다!
Go는 기본적으로는, 정적 타입 언어를 기반으로 만들어졌다.
그래서 코드를 보면, 일반적으로는 다음과 같이 변수를 만든다.
But) 일반적인 언어와 달리, 자료형이 변수명 뒤에 오는 것에 주의하자!
//Golang
var num1 int
var str1 string
var num2 int = 7
var str2 string = "Hello, World!"
//정적 타입으로 자료형을 지정하는 방식
그러나, 이렇게 자료형의 생략도 가능하다.
But) 자료형을 생락하면 변수의 자료형이 대입하는 값으로 지정되므로, 반드시 초기값을 대입하여야 한다.
//Golang
var num = 10
var str = "Hello, World!"
var error_example //컴파일 에러(초기값 지정 X)
'Language > go lang.' 카테고리의 다른 글
[Go]GO 가비지 컬렉션(Garbage Collection) (5) | 2020.09.11 |
---|---|
[Go] Go 언어 강 타입(strongly-typed) (0) | 2020.09.09 |
[Go] VSCODE에 Go 환경 설정 (1) | 2020.09.05 |
[Go] 윈도우에서 Go 설치하기 (0) | 2020.09.04 |
[Go] Go 언어 입문 (1) | 2020.09.03 |
댓글