Post

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. 실수 타입 → 정수 타입 변환
    • 실수 타입에서 정수 타입으로 변환 시 소수점 이하 숫자가 없어진다
    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. 큰 범위 타입 → 작은 범위 타입 변환
    • 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.