• 이 글은 골든래빗 《Tucker의 Go 언어 프로그래밍》의 8장 써머리입니다.
- 상수 선언 방식 : const 사용
const ConstValue int = 10 // const (상수 선언 키워드) ConstValue (상수명) int (타입) // 10 : 값 (불변)
- 상수 규칙
1) 함수 외부 및 첫 글자 대문자 선언 : 외부에 공개되는 상수
2) 한번 선언 후 값 변경 불가능.
2-1) 값으로만 동작 -> 대입문 우변에 올 수 없다. 좌변에 값으로만 동작 -> 포인터와도 사용할 수 없다 (주소값이 아닌 '값'으로만 사용되어야 함)func main(){ const C int = 10 fmt.Println(&C) // 주소값 출력 시도 --> 에러 }
func main(){ const PI1 float64 = 3.14159265358979 // 상수 PI1 = 4 // 에러 발생. 상수 PI1은 좌변 사용 불가. 값 변환 불가 }
- Pig, Cow, Chicken 과 같은 문자열로 나타낼 수 있지만, 이는 번거롭고 스펠링 오타 및 성능, 메모리에 더 비효율적. -> 코드값 부여
const Pig int = 0 const Cow int = 1 const Chicken int = 2 func PrintAnimal (animal int){ if animal == Pig { fmt.Psintln("꿀꿀") }else if animal == Chicken { fmt.Psintln("꼬끼오") } else { fmt.Println("...") } } func main(){ PrintAnimal(Pig) // 꿀꿀 출력 PrintAnimal(Chicken) // 꼬끼오 출력
코드값으로 사용하는 값이 1씩 증가하도록 정의할 때 사용하는 키워드.
const ( Red int iota // 0 Blue int iota // 1 Green int iota // 2 ) // 소괄호를 벗어나면 iota는 초기화 됨 // 첫 번째 값과 같은 ㄱ규칙이 적용되면 iota 생략 가능 const ( C1 uint = iota + 1 // 1 = 0 + 1 C2 // 2 = 1 + 1 C3 // 3 = 2 + 1
const PI = 3.14 // 타입 없는 상수 const FloatPI float64 = 3.14 // float64 타입 func main(){ var a int = PI * 100 var b int = FloatPI * 100 // 타입 오류 fmt.Println(a) // 정상 출력 314 fmt.Println(b) // 에러 발생 > 타입 오류 }