기술/Mastering Go

Mastering Go 3장: 연습문제

햇.빛 2019. 8. 31. 19:31

이 포스팅에서는 『Go 마스터하기』라는 훌륭한 책의 연습 문제를 풉니다.

Go 마스터하기
국내도서
저자 : 미할리스 추칼로스(Mihalis Tsoukalos) / 남기혁역
출판 : 에이콘출판사 2018.10.16
상세보기

숫자 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
}