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 제어문 안에서 임시 변수를 사용할 때 매우 유용하게 사용됩니다.


변수를 여러 개 선언할 때에는 콤마(',')로 구분하여 나열합니다.

여기서 나열되어 선언되는 변수의 대입되는 개수는 서로 같아야됩니다.

여기서 변수의 타입은 지정하지 않으면 변수의 타입은 대입되는 값의 타입으로 선언됩니다.



변수를 여러 개 선언할 때에도 처음에 소개한 방법으로도 선언이 가능합니다.



이런 식으로도 선언이 가능합니다.

ex) var a,b,c int = 10,20,30 (O), var a,b = 10, "Hello" (O), a,b,c := 10,20,30,40 (X)


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)에 대해 알아보도록 하겠습니다.






+ Recent posts