상수를 이용할 때
java에서의 enum 처럼
열거된 상수들에 0부터 시작하는 번호를 붙여주는 iota 라는 것이 있다.
iota의 사용 예시는 다음과 같다.
package main
import "fmt"
function main() {
const (
Jan = 1
Feb = 2
Mar = 3
Apr = 4
May = 5
Jun = 6
)
fmt.Println(Jan)
fmt.Println(Feb)
fmt.Println(Mar)
fmt.Println(Apr)
fmt.Println(May)
fmt.Println(Jun)
}
package main
import "fmt"
function main() {
const (
Jan = iota + 1
Feb
Mar
Apr
May
Jun
)
fmt.Println("Jan ", Jan)
fmt.Println("Feb ", Feb)
fmt.Println("Mar ", Mar)
fmt.Println("Apr ", Apr)
fmt.Println("May ", May)
fmt.Println("Jun ", Jun)
}
iota는 java의 enum과 같이 0부터 시작하기 때문에
시작 변수인 Jan이 1이 되기 위해 iota에 1을 더해주었다.
iota를 할당해준 상수에서 부터 마지막 상수까지
순서대로 0에서 시작하여 1씩 증가된 값이 변수에 할당된다.
만약, enum에서 생략하고 싶은 범위가 있다면 해당하는 상수와 _
를 치환해주면 생략할 수 있다.
_
는 java에선 없는 개념이라 생소했는데,
go 언어를 주로 활용하는 분야에서는 굉장히 많이 사용된다고 한다.
규칙적으로 증가하는 값이 자동으로 상수에 할당되기 때문에
규칙적으로 증가하는 값이 필요하고 중간에 필요 없는 구간이 있는 경우에 사용하면 좋을것 같다.
package main
import "fmt"
func enumiota3() {
const (
Jan = iota + 1
Feb
_
Apr
May
Jun
)
fmt.Println("Jan ", Jan)
fmt.Println("Feb ", Feb)
fmt.Println("Apr ", Apr)
fmt.Println("May ", May)
fmt.Println("Jun ", Jun)
}