프로그래밍언어/Go

상수『Tucker의 Go 언어 프로그래밍#8』

구구절절2 2021. 5. 27. 16:39
반응형

본글은 『Tucker의 Go 언어 프로그래밍』 스터디 요약 노트입니다.

상수선언


상수선언의 규칙은 변수선언의 규칙과 같다.

const number int = 10

하지만 상수는 한번 선언하면 그 값을 변경할 수 없다.

그래서 상수는 변하지 않아야하는 값이 있을 때 쓰인다.

코드값으로 사용하기


상수는 컴파일 과정에서 숫자로 바뀐다. 그래서 컴퓨터는 그저 숫자로 인식한다.

상수로 코드값으로 사용하면 메모리 측면에서 유리하다.

예를 들자면 아스키코드는 A를 숫자 65로 저장하고 http 200번은 ok를 의미한다. 우리가 화면에서 a라는 글자를 보는 것은 65라는 숫자값이 들어오면 화면에 a라는 도트를 찍어라 라는 명령의 결과다.

사용자는 프로그램에서 a,b,d 등등으로 인식하겠지만 컴퓨터는 a,b,c를 숫자로 인식해서 사람은 인간의 언어로 입력등의 작업이 가능하고 컴퓨터는 작업을 보다 빨리 진행 할 수 있다.

iota


코드값을 사용할 때 1,2,3,처럼 1씩 증가하도록 정의할 때 iota는 유용하다.

const(
	Red int = iota  //0으로 설정된다. 
	Blue int = iota //1로 설정된다. 
	Green int = iota //2로 설정된다. 
)

iota에는 연산이 가능하다. 비트연산 더하기 뺄셈 등등

계속 같은 규칙이 반복 된다면 iota를 생략할 수 있다.

const(
	BitFlag1 uint = 1 << iota 
	BitFlag2 
	BitFlag3
)
//비트플레그는 비트 하나하나에 의미를 부여하는 기법인데 나중에 따로 공부하겠다. 

타입없는 상수


상수 선언 시 타입을 명시하지 않을 수 있다. 그러면 타입이 없는 상수가 되는데 타입 없는 상수는 타입이 정해지지 않는 상태로 사용되고 여러타입과 계산이 가능하다.

package main 

imoort "fmt"

const PI = 3.14 //타입이 없는 상수를 선언했다. 

func main(){
	var a int = PI * 100 //float 와 int의 계산이지만 계산이 가능하다. 
}

상수와 리터럴


컴퓨터에서 리터럴은 고정된 값을 말한다.

상수는 컴파일 과정에서 리터럴로 변환되어 실행파일에 쓰인다.

상수는 메모리에 기록되지 않기때문에 변수처럼 cpu가 메모리 주소로 가서 값을 가져오는 작업을 수행하지 않습니다.

반응형