상수를 왜 쓰는지, 사용방법

HeejinShin·2022년 10월 11일
0

GO

목록 보기
7/10
post-thumbnail

상수 사용 이유

  • 변하지 않을 값을 담을 때 사용
  • 절대로 변경되면 안되는 값의 변경을 막아 안전하게 사용

상수 선언

  • 올 수 있는 타입 : 기본 타입 (구조체, 배열 등 불가) ;불리언, 정수, 룬, 실수, 복소수, 문자열

    	```
    	const ConstValue int = 10
    	```
  • 변수를 뜻하는 var 대신 상수를 뜻하는 const 키워드 사용

  • 상수명 규칙은 변수명과 같습니다. ; 함수명도 동일

  • 함수외부에 선언되어 있고 첫 글자가 대문자인 상수는 패키지 외부로 공개되는 상수이다.

  • 값으로만 동작하기 때문에 대입문의 좌변에 올 수 없다.

상수 선언의 규칙을 지키지 않을 경우 아래 코드의 경우 처럼 오류가 발생한다.

package main

import "fmt"

func main() {
	const C int = 10

	var b int = C * 20
	C = 20
	fmt.Println(&C)
}
  • cannot assign to C (constant 10 of type int) ; 상수 C에는 할당될 수 없다
  • invalid operation: cannot take address of C (constant 10 of type int) ; 상수 C의 주소값을 가져올 수 없다. '&' 연산자를 사용하면 그 변수의 메모리 주솟값을 반환한다. 상수는 값으로만 동작하며 그에따라 접근할 수 있는 메모리 주솟값이 없기때문에 이를 출력시 다음과 같은 에러가 발생한다.

+ 부연설명

  • 상수는 컴파일 타임에 리터럴로 전환되어 실행파일에 값 형태로 쓰이기 때문에 메모리 주솟값에 접근할 수 없는 것이다. 리터럴이란 고정된 값, 값 자체로 쓰인 문구를 말하는데 Go언어에서 상수를 이러한 리터럴과 같이 취급한다. 그래서 컴파일될 때 상수는 리터럴로 변환되어 실행파일에 쓰인다. 동적 할당 메모리 영역또한 사용하지 않는다.

한번더 정리!

  • 상수는 값으로만 동작한다. 따라서 변수가 값, 이름, 타입, 메모리주소 4가지 속성을 가지는 반면 상수는 값, 이름, 타입 이렇게 3가지 속성만을 갖는다.
profile
Studying Go Lang

0개의 댓글