package main
import (
"fmt"
"reflect"
"time"
)
//将New定义为int类型
type NewInt int
//将int取一个别名叫IntAlias
type IntAlias =int
/*
能够随意的为各种类型起名字,不意味着可以在这些类型里任意添加方法
*/
//
//定义time.Duration 别名为MyDuration
type MyDuration time.Duration//(别名等于号,类型空格)
//为MyDuration添加一个函数
func(m MyDuration)EasySet(a string){
}
//在结构体成员嵌入时使用别名
//定义商标结构
type Brand struct {
}
//为商标添加Show()方法
func (t Brand) Show() {
}
//为Brand定义一个别名FakeBrand
type FakeBrand = Brand
//定义车辆结构
type Vehicle struct {
//嵌入两个结构
FakeBrand
Brand
}
func main() {
//声明变量为j的车辆类型
var j Vehicle
//指定调用FakeBrand的show
j.FakeBrand.Show()
//取j的类型反射对象
ta:=reflect.TypeOf(j)
for i:=0;i<ta.NumField() ;i++ {
//j的成员信息
f:=ta.Field(i)
fmt.Printf("FiledName:%v,FiledType:%v\n",f.Name,f.Type.Name())
}
//将a声明为NewInt类型
var a NewInt
//查看a的类型
fmt.Printf("a type:%T\n",a)//NewInt
var a2 IntAlias //declared 声明
fmt.Printf("a2 type:%T\n",a2)//int
}