go - iota
- go lang에는 iota 라는 “constant incremental sequence”가 존재합니다. 필요에 따라 여러 상수를 한번에 정의하는 일들이 있는데요, 가령 January 부터 December까지 각 값에 1, …, 12 까지의 값을 정의해준다고 하겠습니다.
- python에서는 다음과 같이
enum
을 사용해서 해줄 수 있을 것 같습니다.
from enum import Enum
class Month(Enum):
JAN = 1
FEB = 2
MAR = 3
if __name__ == "__main__":
print(Month.JAN, Month.JAN.name, Month.JAN.value)
print(Month.FEB == 2)
print(Month.MAR == 3)
"""
Month.JAN JAN 1
False
False
"""
- golang에서는 다음처럼 할 수 있습니다.
iota
는 0부터 1씩 증가하는 값으로 해당 블록 내에서 호출될때마다 1씩 증가합니다. 값이 생략되어 있으면 호출되어 있지 않아도 알아서 값이 지정됩니다.
// iota.go
package main
import "fmt"
func main() {
/*
iota 는 0부터 시작하여 1씩 증가하는 incremental constant입니다.
*/
const (
JAN int = iota + 1 // 0 + 1
FEB // 1 + 1
MAR // 2 + 1
APR
MAY
JUN
JUL
AUG
SEP
OCT
NOV
DEC // 11 + 1
)
fmt.Println(JAN) // 1
fmt.Println(DEC) // 12
}
iota
를 사용하지 않을 경우 아래와 같이 일일이 값을 입력해줘야 합니다. 불필요한 syntantic sugar가 아닌가 싶기도 하지만, 일단은 이런것도 있다 라고 알아두면 될 것 같아요.
package main
func main() {
const (
JAN int = 1
FEB int = 2
// ...
DEC int = 12
)
}
Reference
댓글남기기