Goで型の確認

package main

import (
    "fmt"
    "reflect"
)

type Person struct {
    name string
    age  int
}

func foo() string {
    s := "foo"
    return s
}

func hi(name string) string {
    s := "hi! " + name
    return s
}

func main() {
    //数値
    fmt.Println(reflect.TypeOf(1))   // int
    fmt.Println(reflect.TypeOf(1.2)) // float64

    //文字列
    fmt.Println(reflect.TypeOf("foo")) // string

    //真偽値
    fmt.Println(reflect.TypeOf(true))  // bool
    fmt.Println(reflect.TypeOf(false)) // bool

    //配列
    fmt.Println(reflect.TypeOf([]string{})) // []string

    //関数
    fmt.Println(reflect.TypeOf(func() {})) // func()
    fmt.Println(reflect.TypeOf(foo))       // func() string
    fmt.Println(reflect.TypeOf(hi))        // func(string) string

    //構造体
    fmt.Println(reflect.TypeOf(Person{})) // main.Persion

}

play golang