Skip to content

Instantly share code, notes, and snippets.

@nakagami
Created September 11, 2013 02:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nakagami/6518526 to your computer and use it in GitHub Desktop.
Save nakagami/6518526 to your computer and use it in GitHub Desktop.
A sample code, to use reflect and convert interface{} to original type.
package main
import (
"fmt"
"reflect"
)
type AnyType interface{}
func f(a AnyType) AnyType {
return a
}
func main() {
var i32 int32
i32 = 32
var i64 int64
i64 = 64
str := "String"
lst := []AnyType{1, "hello!", []AnyType{1,2,3}}
r1 := f(i32)
t1 := reflect.TypeOf(r1)
fmt.Println(r1)
fmt.Println(t1, t1.Kind() == reflect.Int32, r1.(int32) == i32)
r2 := f(i64)
t2 := reflect.TypeOf(r2)
fmt.Println(r2)
fmt.Println(t2, t2.Kind() == reflect.Int64, r2.(int64) == i64)
r3 := f(str)
t3 := reflect.TypeOf(r3)
fmt.Println(r3)
fmt.Println(t3, r3.(string) == str)
r4 := f(lst)
t4 := reflect.TypeOf(r4)
fmt.Println(r4)
fmt.Println(t4)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment