[Golang] Go 언어 기초 문법 (2) – 변수

변수 정의

변수는 값을 저장하는 메모리 공간을 가리키는 이름입니다. 변경 가능한 수이기 때문에 변수라 부릅니다.

변수 선언

변수 선언 방법은 아래와 같습니다.

[변수 선언 키워드] [변수명] [타입] = [초기값]

// 정석
var age int = 25

// 응용 표현
var age int    // 초기화 생략
var age = 25   // 타입 생략. 우변의 값으로 타입을 정한다.
age := 25      // 선언 대입문 ":="을 사용해서 var 키워드와 타입을 생략

변수의 4가지 속성

  1. 이름 : 이름을 통해 값이 저장된 메모리 공간에 접근할 수 있습니다.
  2. 값 : 메모리 공간에 저장된 값입니다.
  3. 주소 : 변수가 저장된 메모리 공간의 시작 주소입니다.
  4. 타입 : 변수 값의 형태. 정수, 실수, 문자열 등. 다른 말로는 자료형, 데이터 타입이라고도 합니다.

숫자 타입 변수

이름설명값의 범위
uint81byte / 부호 없는 정수0 ~ 255
uint162byte / 부호 없는 정수0 ~ 65,535
uint324byte / 부호 없는 정수0 ~ 4,294,967,295
uint648byte / 부호 없는 정수0 ~ 18,446,744,073,709,551,615
int81byte / 부호 있는 정수-128 ~ 127
int162byte / 부호 있는 정수-32768 ~ 32767
int324byte / 부호 있는 정수-2,147,483,648 ~ 2,147,483,647
int648byte / 부호 있는 정수-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
float324byte / 실수IEEE-754 32비트 실수
float648byte / 실수IEEE-754 64비트 실수
complex648byte / 복소수 (진수, 가수)진수와 가수 범위는 float32 범위와 같음
complex12816byte / 복소수 (진수, 가수)진수와 가수 범위는 float64 범위와 같음
byteuint8의 별칭
1byte 데이터를 나타낼 때 사용
0 ~ 255
runeint32의 별칭
UTF-8로 문자 하나를 나타낼때 사용
-2,147,483,648 ~ 2,147,483,647
int32비트 컴퓨터에서는 int32
64비트 검퓨터에서는 int64
uint32비트 컴퓨터에서는 uint32
64비트 검퓨터에서는 uint64

그외 타입

  1. bool (불리언) : 참 / 거짓 타입. true, false 두개만 저장할 수 있습니다.
  2. string (스트링) : 문자열, 연속된 문자들의 배열을 저장할 수 있습니다.
  3. array (배열) : 같은 타입으로 구성된 연속된 메모리공간을 나타내는 자료구조입니다.
  4. slice (슬라이스) : 가변 길이 배열. array는 고정된 길이인 반면 slice는 길이가 변경 가능합니다.
  5. struct (구조체) : 변수의 집합 자료구조. 상관관계가 있는 데이터를 묶어 놓을때 사용합니다.
  6. pointer (포인터) : 메모리 주소를 값으로 갖는 타입. 즉, 메모리 주소를 저장하는 변수입니다.
  7. function type (함수 타입, 함수 포인터) : 함수를 가리키는 변수, 사용할 함수를 동적으로 바꿀때 유용합니다.
  8. interface (인터페이스) : 메서드 정의의 집합입니다.
  9. map (맵) : 키(key)와 값(value)을 쌍으로 갖는 데이터를 저장하는 자료구조. 키를 사용해 검색할때 검색 속도가 빠릅니다.
  10. channel (채널) : 멀티스레드 환경에 특화된 큐 형태의 자료구조입니다.

타입별 기본값

타입기본값
모든 정수타입0
모든 실수 타입0.0
불리언false
문자열“” (empty value)
그 외 타입nil (정의되지 않은 메모리 주소를 나타냄)

Tucker의 Go 언어 프로그래밍 참조.

책을 보면서 공부한 내용을 정리하면서 작성하는 글입니다. 따라서, 주제 하나를 많은 시간을 들여서 쓰지 않고, 간단하게 작성하는 것부터 시작해서, 계속 다듬어가면서 업데이트해 나갈 생각입니다. 참고하는 자료가 있을 때마다 출처를 적어 놓겠습니다.

[이전글] [Golang] Go 언어 기초 문법 (1) – 특징

[다음글] [Golang] Go 언어 기초 문법 (3) – 연산자

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x