타입체크

    Go: Switch 를 사용하여 타입 체크하기 (Reflection) [Effective Go]

    일반적으로 다른 언어에서는 어떤 값의 타입에 따라 다른 행동을 하고 싶을 때 Reflection 를 사용하여 해결한다. Go 에서는 특이하게도 언어차원에서 Switch 를 사용하여 해결할 수 있는데, 다음과 같이 해볼 수 있다. var t interface{} = map[string]string{ "sayHello": "Hello, Go!", } switch t := t.(type) { case string: fmt.Println(t) case map[string]string: for k, v := range t { fmt.Println(k, v) } } Switch 와 함께 타입 단언(Type Assertion)을 사용하여 해결할 수 있다. 그런데 자세히 살펴보면 map 타입에 대해서는 상당히 불편한 ..