網頁

2022/11/29

Golang 取得物件型別 get object type

Go取得物件型別的方式如下。


使用reflect.TypeOf(i any)即可取得輸入參數的型別物件Type

main.go

package main

import (
    "fmt"
    "reflect"
)

type Bird struct{}

func (bird Bird) Sound() string {
    return "chirp"
}

type Dog struct{}

func (dog Dog) Sound() string {
    return "ruff"
}

type Animal interface {
    Sound() string
}

type CountAnimals func(animals []Animal) int

func main() {

    fmt.Println(reflect.TypeOf(true))                           // bool
    fmt.Println(reflect.TypeOf(123))                            // int
    fmt.Println(reflect.TypeOf(123.45))                         // float64
    fmt.Println(reflect.TypeOf("abc"))                          // string
    fmt.Println(reflect.TypeOf(map[int]string{1: "a", 2: "b"})) // map[int]string
    fmt.Println(reflect.TypeOf([]string{"a", "b"}))             // []string

    bird := Bird{}
    fmt.Println(reflect.TypeOf(bird)) // main.Bird

    dog := Dog{}
    fmt.Println(reflect.TypeOf(dog)) // main.Dog

    animal := dog
    fmt.Println(reflect.TypeOf(animal)) // main.Dog

    f := CountAnimals(func(animals []Animal) int {
        return len(animals)
    })
    fmt.Println(reflect.TypeOf(f)) // main.CountAnimals

    fmt.Println(reflect.TypeOf(func(x, y int) int {
        return x + y
    })) // func(int, int) int

}



沒有留言:

張貼留言