02. 변수
02. 변수
✅ 1. Go 변수 규칙
1.1 필수 사항
- 변수명은 문자,
_
, 숫자를 사용해 지을 수 있지만 첫 글자는 반드시 문자나_
로 시작해야 한다 _
를 제외한 다른 특수문자를 포함할 수 없다
1.2 권장 사항
- 변수명은 영문자를 제외한 다른 언어의 문자를 사용하지 않는다
- 변수명에 여러 단어가 이어지면 두 번쨰 단어부터는 대문자로 시작한다
- 변수명은 되도록 짧게 하며, 잠시 사용되는 로컬 변수는 한 글자를 권장한다
_
은 일반적으로 사용하지 않는다 (사용하는 경우가 존재한다)
✅ 2. 변수 선언
1
2
3
4
var a int = 10 // 기본 형태
var b int // 초기값 생략. 타입별 기본값으로 대체
var c = 4 // 우변 값의 타입
d := 5 // 선언 대입문을 사용해서 var 키워드와 타입 생략
2.1 타입별 기본값
타입 | 기본값 |
---|---|
모든 정수 타입 | 0 |
모든 실수 타입 | 0.0 |
불리언 | false |
문자열 | “”(빈 문자열) |
그 외 | nil |
2.2 숫자값 기본 타입
- 정수는
int
실수는float64
가 기본 타입이다
✅ 3. 타입 변환
- Go는 최강 타입 언어로, 같은 정수여도 타입이 다르면 연산이 불가능하다
- 서로 다른 타입 간 연산을 위해선 타입 변환을 해줘야 한다
3.1 타입 변환 시 주의 사항
- 실수 타입 → 정수 타입 변환
- 실수 타입에서 정수 타입으로 변환 시 소수점 이하 숫자가 없어진다
1 2 3 4 5
a := 3 // int var b float64 = 3.5 // float64 var g int = int(b * 3) // 10 var h int = int(b) * 3 // 9
- 큰 범위 타입 → 작은 범위 타입 변환
- 2바이트 정수 타입에서 1바이트 정수 타입으로 변환 시 상위 1바이트가 사라져 값이 변화할 수 있다
1 2
var a int16 = 3456 // 3456 var c int8 = int8(a) // -128
✅ 4. 변수의 범위
- 변수는 자신이 속한 중괄호 {} 범위를 벗어나면 사라진다
- s는 중괄호 범위에서 벗어나면 사라지기 때문에 에러가 발생한다 (undefined: s)
1
2
3
4
5
6
7
8
9
10
11
var g int = 10 // global 변수
func main() {
var m int = 20 // local 변수
{
var s int = 50 // local 변수
fmt.Println(g, m, s)
}
m = s + 20 // Error
}
✅ 5. 숫자 표현
5.1 정수 표현
- 첫 번째 비트를 부호 비트로 정하여 1이면 음수, 0이면 양수를 나타낸다
- 음수를 나타낼 때는 절댓값의 2의 보수로 표현한다
- 모든 비트를 반전시킨 후 1을 더하여 표현
- 2의 보수로 음수를 표현하면 음수에 별도의 처리를 하지 않고도 더할 수 있다는 장점이 있다
5.2 실수 표현
- IEEE-754 표준
- Go 언어에서는 IEEE-754 표준을 따라 실수를 표현한다
1 2 3
±(1.M) × 2^E-127 ±(1.가수부) × 2^지수부-127
실수 변환
1 2 3 4 5 6 7 8 9 10 11 12 13 14
-118.625 정수부 변환 118 = 1110110(2) 소수부 변환 0.625 = 101(2) 결과 118.625 = 1110110.101(2) >> 1.110110101 X 2^6 110110101이 가수부, 6 + 127 = 133 = 100000101이 지수부가 된다
- 지수부가 음수가 될 수 있기 때문에 bias라는 고정값을 더하여 지수부를 결정한다
- float32에서의 bias는 127, float64에서는 1023을 사용한다
✅ 6. Reference
This post is licensed under CC BY 4.0 by the author.