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
}
沒有留言:
張貼留言