기술/Mastering Go
Mastering Go 3장: 연습문제
햇.빛
2019. 8. 31. 19:31
이 포스팅에서는 『Go 마스터하기』라는 훌륭한 책의 연습 문제를 풉니다.
![]() |
|
숫자 4의 제곱에 대한 iota
앞에 예제도 숫자 4의 제곱에 대한 iota이지만 더 깔끔하게 한다면?
package main
import (
"fmt"
)
const (
power40 = 1 << (2 * iota)
power41
power42
power43
power44
power45
)
func main() {
fmt.Println(power40, power41, power42, power43, power44, power45)
return
}
요일 대한 iota
Weekday 타입을 만들고, Weekday에 대한 String 메소드를 오버라이드 하여 구현합니다. 짱신기!
package main
import (
"fmt"
)
// 한 주의 요일에 대한 iota
type Weekday int
const (
Sunday Weekday = iota
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
)
func (day Weekday) String() string {
names := [...]string{
"Sunday",
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday"}
if day < Sunday || day > Saturday {
return "Unknown"
}
return names[day]
}
func main() {
fmt.Println(Sunday)
return
}
배열을 맵으로 변환하는 함수
package main
import "fmt"
// 배열을 맵으로 변환
func main() {
arr := [5]int{1, 2, 3, 4, 5}
m := arrayToMap(&arr)
for key, value := range m {
fmt.Println(key, value)
}
}
func arrayToMap(arr *[5]int) map[int]int {
m := make(map[int]int)
for i, v := range *arr {
m[i] = v
}
return m
}