이 글은 골든래빗 《Tucker의 Go 언어 프로그래밍》의 04장 써머리입니다.
04 변수
4.1 변수란?
변수(variable)는 값을 저장하는 메모리 공간
package main
import "fmt"
func main() {
var a int = 10 // a 변수 선언 - ❶
var msg string = "Hello Variable" // msg 변수 선언 - ❷
a = 20 // a 변수 값 변경 - ❸
msg = "Good Morning" // msg 변수 값 변경 - ❹
fmt.Println(msg, a) // msg 와 a 값 출력 - ❺
}
4.2 변수 선언
변수를 사용하려면 먼저 변수를 선언해야한다.
변수 선언이란 컴퓨터에게 값을 저장할 공간을 마련하라고 명령을 내리는 것.
메모리 할당
이라고 한다.
- variable의 약자로 변수 선언을 알리는 키워드
- 선언할 변수의 이름
- 선언할 변수의 타입
- 초기화할 변수의 값
4.3 변수에 대해 더 알아보기
4.3.1 변수의 4가지 속성
- 이름: 이름을 통해 값이 저장된 메모리 공간에 손쉽게 접근 가능
- 값: 변수가 가리키는 메모리 공간에 저장된 값
- 주소: 변수가 저장된 메모리 공간의 시작 주소
- 타입: 변수값의 형태 (자료형 혹은 데이터 타입이라고도 함)
- 위와 같이 변수를 선언하면 선언한 타입의 크기에 해당하는 공간을 할당하고, 그 공간이 위치한 메모리의 시작 주소를 a로 지칭한다. 이후 해당 메모리 공간에 10이라는 값을 복사한다.
- 변수 a의 값을 바꾸면 a의 메모리 시작 주소부터 변수타입의 크기 만큼의 공간에 값 50을 복사한다.
4.3.2 변수는 이름을 가지고 있다.
변수명 네이밍 규칙
문자
, 숫자
, _
를 사용할 수 있다.
- 첫 글자는 반드시
문자
혹은 _
_
를 제외한 다른 특수문자 사용 불가
변수명 권장 사항
- 영문 알파벳만 사용할 것
- camel case 사용할 것
- 변수명은 되도록 짧게 사용. 잠시 사용하는 로컬변수는 한글자 권장
- 밑줄
_
은 일반적으로 사용하지 않는다.
4.3.3 변수는 타입을 가지고 있다
-
타입은 공간의 크기를 나타낸다.
변수는 메모리 주소를 가르킨다.
즉, 어디서부터 어디까지 읽을지 알수있다
-
타입을 알아야 컴퓨터가 데이터를 해석할 수 있다.
4.4 변수 선언의 다른 형태
아래 4가지 형태가 있다고 한다.
package main
func main() {
var a int = 3
var b int
var c = 4
d := 5
}
타입별 기본값
- 변수를 선언할 때 초깃값을 생략하면 다음의 기본값이 자동 대입된다.
타입 | 기본값 |
---|
모든 정수 타입 | 0 |
모든 실수 타입 | 0.0 |
불리언 | false |
문자열 | "" |
그외 | nil |
숫자값 기본 타입
타입추론을 통해 변수를 선언하는 경우 우변이 정수이면 int, 실수이면 float64가 기본으로 지정된다.
4.5 타입 변환
- Go는 최강타입 언어이다.
- 연산이나 대입에서 타입이 다르면 에러 발생.
- 다른 타입과 연산을 하려면 타입변환을 통해 타입을 통일시켜야 연산이 가능하다.
타입 변환 시 두가지 유의점
- 실수 타입에서 정수타입으로 타입을 변환하면 소수점 이하가 버려진다.
- 큰 범위를 갖는 타입에서 작은 범위를 갖는 타입으로 변환하면 값이 달라질 수 있다.
4.6 변수의 범위
변수는 각 scope에 맞는 생명주기를 가지고 있다.
4.7 숫자 표현
4.7.1 정수 표현
- 정수는 부호를 표현해야 하기 때문에 첫 번째 비트를 부호 비트로 정해 1이면 음수, 0이면 양수를 나타낸다.
- 00000001 => 1
- 10000001 => -1
4.7.2 실수의 표현
- 실수는 무수히 많은 숫자가 있기 때문에 정수 타입처럼 바로 2진수로 변환하여 사용할 수 없다.
- Go는 IEEE-743표준을 따라 실수를 표현한다.
- ex) 1024.234는 0.1024234 x 10^4
- 모든 실수를 표현할 수 없고 한계가 있다는 점이다.
- 회계나 금융과 같이 정확한 수치 연산이 필요한 프로그래밍에서는 실수 타입 사용에 각별한 주의가 필요하다.
요약
- 변수는 값을 저장하는 메모리 공간
- 변수를 사용하려면 선언을 해야한다.
- 변수는 4가지 속성이 있다. 이름, 값, 타입, 주소
- 변수 선언 방법은 다양하다.
- 타입 변환은 한 타입의 값을 변환 가능한 다른 타입으로 변환시키는 것.
- 숫자 타입은 크기에 따라 표현할 수 있는 값의 범위가 다르다.