1. 변수(Variable)
수학을 공부하신 분들은 '변수'에 대해 알고 계실 겁니다.
수학에서의 변수와 프로그래밍에서 쓰이는 변수는 비슷합니다.
프로그래밍의 변수는 쉽게 말하자면 무언가를 담는 박스라고 생각하시면 됩니다.
값을 저장할 수 있고, 우리가 필요할 때는 그 값을 참조하여 사용할 수 있습니다.
잠깐의 이해를 도우려고 간단한 코드로 예를 들어보겠습니다.
시나리오
"어머니께서 심부름을 시키기 위해 천 원을 주셨습니다.
상추 한 잎을 사오라고 하셨습니다.
상추 한 잎에 800원이라고 하였을 때, 우리가 거스름돈으로 받아야 할 금액은 200원이 됩니다."
이에 상황에 맞는 코드를 작성하면 이러한 코드가 됩니다.
위의 코드에서의 money, sangchoo 는 변수이며 변수가 담고 있는 값을 잘 출력하는 것을 볼 수 있습니다.
9행에 보시면 money 변수에 1000이라는 값이 들어가고
10행에서는 sangchoo 변수에 800이라는 값이 들어가는 것을 볼 수 있습니다.
12~13행은 그 변수 안에 있는 값을 가져와 출력을 하는 것을 볼 수 있으며,
15행에서는 각 변수의 값들을 뺀 값을 출력을 합니다.
1-1. 깊게 파고 들자
Go 언어에서 변수를 선언하는 방법은 var 키워드를 사용하는 방식과 자료형을 생략하는 방법이 있습니다.
(1) Var 키워드
※ var 변수명 데이터 타입
다른 언어와는 달리 데이터 타입이 변수 명의 뒤에 옵니다.
변수 명을 작성할 때의 주의하여야 할 점이 있습니다.
변수 명은 문자와 숫자로 이루어져야 합니다.
※ 단, 문자 또는 _ (언더 바)로 시작해야 하며 숫자로 시작할 수 없습니다.
ex) hubeen0(O), _hubeen_is_sexy(O), 18Love22(X)
(2) 자료형 생략 선언
자료형을 생략하고 선언을 하시려면 반드시 초기 값을 대입하셔야 됩니다.
자료형을 생략하고 초기 값을 대입하면 초기 값의 데이터 타입으로 결정됩니다.
ex) var a = 10(O), var b = "fukkk"(O), var sexy(X)
(3) 손 쉽게 선언하기
빠른 선언과 여러 개의 변수를 선언하는 방법을 소개합니다.
:=를 사용하면 위에서 소개한 방법들을 사용하지 않고 간단히 변수를 선언하고 초기화 할 수 있습니다.
여기서 변수의 타입은 대입 값의 타입으로 선언됩니다.
이 변수 선언 방법은 if, for 제어문 안에서 임시 변수를 사용할 때 매우 유용하게 사용됩니다.
변수를 여러 개 선언할 때에는 콤마(',')로 구분하여 나열합니다.
여기서 나열되어 선언되는 변수의 대입되는 개수는 서로 같아야됩니다.
여기서 변수의 타입은 지정하지 않으면 변수의 타입은 대입되는 값의 타입으로 선언됩니다.
변수를 여러 개 선언할 때에도 처음에 소개한 방법으로도 선언이 가능합니다.
1-2. 기본 데이터 형식 (Basic types)
Go 언어에서 제공하는 기본 데이터 형식들을 표로 정리하였습니다.
※ 잘못 번역된 부분도 있을 수 있으며 틀릴 수도 있습니다.
구분 |
데이터 형식 |
설명 |
값의 범위 |
논리 |
bool |
- |
True, False |
문자열 |
string |
- |
- |
정수 |
rune |
int32와 크기가 동일, 유니코드 문자코드를 저장할 때 사용 |
- |
정수 |
int |
32bit에서는 int32 64bit에서는 int64 |
- |
정수 |
int8 |
부호 있는(signed) 8비트, 1바이트 정수 |
-128 ~ 127 |
정수 |
int16 |
부호 있는(signed) 16비트, 2바이트 정수 |
-32768 ~ 32767 |
정수 |
int32 |
부호 있는(signed) 32비트, 4바이트 정수 |
-2147483648 ~ 2147483647 |
정수 |
int64 |
부호 있는(signed) 64비트, 8바이트 정수 |
-9223372036854775808 ~ 9223372036854775807 |
정수 |
uint |
32bit에서는 uint32 64bit에서는 uint64 |
- |
정수 |
uint8 |
부호 없는(unsigned) 8비트, 1바이트 정수 |
0 ~ 255 |
정수 |
uint16 |
부호 없는(unsigned) 16비트, 2바이트 정수 |
0 ~ 65535 |
정수 |
uint32 |
부호 없는(unsigned) 32비트, 4바이트 정수 |
0 ~ 4294967295 |
정수 |
uint64 |
부호 없는(unsigned) 64비트, 8바이트 정수 |
0 ~ 18446744073709551615 |
정수 |
uintptr |
uint와 크기가 동일하며, 포인트를 저장할 때 사용 |
- |
정수 |
byte |
uint8와 크기가 동일하며, 바이트 단위로 저장할 때 사용 |
- |
실수 |
float32 |
IEEE-754 32비트 단정밀도 부동 소수점, 7자리 정밀도 보장 |
- |
실수 |
float64 |
IEEE-754 64비트 배정밀도 부동 소수점, 15자리 정밀도 보장 |
- |
실수 |
complex64 |
float32 크기의 실수부와 허수부로 된 복소수 |
- |
실수 |
complex128 |
float64 크기의 실수부와 허수부로 된 복소수 |
- |
(1) 정수 데이터 형식
정수 데이터 형식의 변수에 값을 담고 그 값을 출력하는 예제를 작성할 수 있습니다.
(2) 실수 데이터 형식
실수 데이터 형식의 변수에 값을 담고 그 값을 출력하는 예제를 작성할 수 있습니다.
(3) 문자열 데이터 형식
문자열 데이터 형식의 변수에 값을 담고 그 값을 출력하는 예제를 작성할 수 있습니다.
(4) 논리 데이터 형식
논리 데이터 형식의 변수에 값을 담고 그 값을 출력하는 예제를 작성할 수 있습니다.
2. 형식 변환(Type conversion)
형식 변환이란 다른 데이터 형식에 옮겨 담기 위해 데이터 형식을 변환하는 것을 말합니다.
쉽게 말하자면 이 변수는 정수를 받는 박스인데
저희가 집어넣으려는 값을 실수인 상황인 겁니다!
이러한 상황에서는 실수를 정수로 변환한 뒤에 넣어야 되게 되기 때문에
이러한 상황에 쓰이는 녀석입니다.
아래에 예제들을 보도록 하겠습니다.
2-1. 정수 → 실수, 실수 → 정수 형 변환정수에서 실수로 변환하는 과정과 실수에서 정수로 변환하는 과정의 차이를 눈으로 확인할 수 있습니다.
정수에서 실수로 바꾸는 과정에서는 아무 문제 없이 잘 바뀜을 알 수 있습니다.
실수에서 정수로 바꾸는 과정에서는 소수점 아래는 모두 버리는 것을 알 수 있습니다.
500.1234에서 소수점 아래의 1234가 버려지고 b에 들어가는 것을 알 수 있습니다.
3. 상수(Constants)
상수란 무엇일까요?
상수(常數)란 수식에서 변하지 않는 값을 뜻한다. 이것은 변하는 값 변수와 반대이다.
라고 위키백과에 적혀있습니다.
위와 같이 상수란 변하지 않는 고정된 값입니다.
수천 줄 수만 줄인 프로그램을 작성하게 될 때 수 많은 변수를 선언하게 됩니다.
그러나 이 수많은 변수들 중 값이 도중에 변경되어도 프로그램에 영향을 주는 변수와 도중에 변경되면 심각하게 영향을 주는 변수가 있습니다.
ex) admin, auth
만약에 코드를 작성하다가 나도 모르게 값을 변경하지 말아야 되는 변수를 건드려서 버그가 생길 수 있다는 겁니다!
Go 언어에서는 const 키워드로 상수를 만들 수 있습니다.
이 const 키워드를 선언과 동시에 초기화된 값은 절대로 변하지 않습니다.
위와 같이 선언할 수 있습니다.
변수와 마찬가지로 문자 또는 언더바 ('_')로 시작하여야 하며 숫자로는 시작할 수 없습니다.
ex) 18Love22, 7eleven, 24hour
그리고 이 아래의 있는 코드는 잘 못된 코드입니다.
(1) 자료형 생략 선언
변수와 같이 자료형을 생략하고 선언이 가능합니다.
위와 같이 선언할 수 있습니다.
변수처럼 초기에 대입하는 값의 자료형으로 선언됩니다.
※ 초깃 값을 꼭 대입해줘야 됩니다.
(2) 여러 개 선언
상수를 여러 개 선언하고 초기화할 때는 변수와 값을 콤마(',')로 구분하여 나열합니다.
상수를 선언한 순서대로 값이 대입되며 반드시 선언한 상수의 개수와 대입할 값의 개수가 같아야 합니다.
선언할 때 자료형을 지정하지 않으면 대입하는 값의 자료형으로 선언됩니다.
또 const 키워드와 ( )를 사용하면 상수 여러 개를 한 번에 선언하고 초기화할 수 있습니다.
여기서도 상수의 자료형을 지정하거나 생략할 수 있습니다.
마찬가지로 자료형을 지정하지 않으면 상수의 자료형은 대입하는 값의 자료형으로 결정됩니다.
※ 변수와는 달리 초깃값을 반드시 지정해줘야 됩니다.
이번 강좌에 변수와 데이터 형식 그리고 상수에 대한 설명이 끝났습니다.
이 긴 글을 읽어주셔서 감사합니다.
다음 강좌에서는 연산자(Operators)에 대해 알아보도록 하겠습니다.
'0x0a Programming > 0x0b Go Lang' 카테고리의 다른 글
Go 강좌 6편. 반복문(for, continue) (0) | 2016.01.06 |
---|---|
Go 강좌 5편. 패키지(Package)와 조건문(if, else, switch) (1) | 2015.12.30 |
Go 강좌 4편. 연산자(Operators) (0) | 2015.12.25 |
Go 강좌 2편. 안녕? Stop? GO! (31) | 2015.12.03 |
Go 강좌 1편. 시작 (126) | 2015.12.02 |