변수 정의
변수는 값을 저장하는 메모리 공간을 가리키는 이름입니다. 변경 가능한 수이기 때문에 변수라 부릅니다.
변수 선언
변수 선언 방법은 아래와 같습니다.
[변수 선언 키워드] [변수명] [타입] = [초기값]
// 정석 var age int = 25 // 응용 표현 var age int // 초기화 생략 var age = 25 // 타입 생략. 우변의 값으로 타입을 정한다. age := 25 // 선언 대입문 ":="을 사용해서 var 키워드와 타입을 생략
변수의 4가지 속성
- 이름 : 이름을 통해 값이 저장된 메모리 공간에 접근할 수 있습니다.
- 값 : 메모리 공간에 저장된 값입니다.
- 주소 : 변수가 저장된 메모리 공간의 시작 주소입니다.
- 타입 : 변수 값의 형태. 정수, 실수, 문자열 등. 다른 말로는 자료형, 데이터 타입이라고도 합니다.
숫자 타입 변수
이름 | 설명 | 값의 범위 |
uint8 | 1byte / 부호 없는 정수 | 0 ~ 255 |
uint16 | 2byte / 부호 없는 정수 | 0 ~ 65,535 |
uint32 | 4byte / 부호 없는 정수 | 0 ~ 4,294,967,295 |
uint64 | 8byte / 부호 없는 정수 | 0 ~ 18,446,744,073,709,551,615 |
int8 | 1byte / 부호 있는 정수 | -128 ~ 127 |
int16 | 2byte / 부호 있는 정수 | -32768 ~ 32767 |
int32 | 4byte / 부호 있는 정수 | -2,147,483,648 ~ 2,147,483,647 |
int64 | 8byte / 부호 있는 정수 | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
float32 | 4byte / 실수 | IEEE-754 32비트 실수 |
float64 | 8byte / 실수 | IEEE-754 64비트 실수 |
complex64 | 8byte / 복소수 (진수, 가수) | 진수와 가수 범위는 float32 범위와 같음 |
complex128 | 16byte / 복소수 (진수, 가수) | 진수와 가수 범위는 float64 범위와 같음 |
byte | uint8의 별칭 1byte 데이터를 나타낼 때 사용 | 0 ~ 255 |
rune | int32의 별칭 UTF-8로 문자 하나를 나타낼때 사용 | -2,147,483,648 ~ 2,147,483,647 |
int | 32비트 컴퓨터에서는 int32 64비트 검퓨터에서는 int64 | |
uint | 32비트 컴퓨터에서는 uint32 64비트 검퓨터에서는 uint64 |
그외 타입
- bool (불리언) : 참 / 거짓 타입. true, false 두개만 저장할 수 있습니다.
- string (스트링) : 문자열, 연속된 문자들의 배열을 저장할 수 있습니다.
- array (배열) : 같은 타입으로 구성된 연속된 메모리공간을 나타내는 자료구조입니다.
- slice (슬라이스) : 가변 길이 배열. array는 고정된 길이인 반면 slice는 길이가 변경 가능합니다.
- struct (구조체) : 변수의 집합 자료구조. 상관관계가 있는 데이터를 묶어 놓을때 사용합니다.
- pointer (포인터) : 메모리 주소를 값으로 갖는 타입. 즉, 메모리 주소를 저장하는 변수입니다.
- function type (함수 타입, 함수 포인터) : 함수를 가리키는 변수, 사용할 함수를 동적으로 바꿀때 유용합니다.
- interface (인터페이스) : 메서드 정의의 집합입니다.
- map (맵) : 키(key)와 값(value)을 쌍으로 갖는 데이터를 저장하는 자료구조. 키를 사용해 검색할때 검색 속도가 빠릅니다.
- channel (채널) : 멀티스레드 환경에 특화된 큐 형태의 자료구조입니다.
타입별 기본값
타입 | 기본값 |
모든 정수타입 | 0 |
모든 실수 타입 | 0.0 |
불리언 | false |
문자열 | “” (empty value) |
그 외 타입 | nil (정의되지 않은 메모리 주소를 나타냄) |
Tucker의 Go 언어 프로그래밍 참조.
책을 보면서 공부한 내용을 정리하면서 작성하는 글입니다. 따라서, 주제 하나를 많은 시간을 들여서 쓰지 않고, 간단하게 작성하는 것부터 시작해서, 계속 다듬어가면서 업데이트해 나갈 생각입니다. 참고하는 자료가 있을 때마다 출처를 적어 놓겠습니다.