作用一:定义结构
type Person struct { name string age int}type Mutex struct {}type OtherMutex Mutex //定义新的类型func (m *Mutex) Lock(){ fmt.Println("lock")}func (m *Mutex) Unlock(){ fmt.Println("lock")}func main() { m := &OtherMutex{} //注意,OtherMutex不具有Lock和Unlock方法 m.Lock()}
作用二:定义结构
type Personer interface{ ShowName(s string)}
作用三:别名定义
type nameMap = map[string]interface{}func main() { m :=make(nameMap) m["name"] = "golang" fmt.Printf("%v", m)}//另外别名定义和类型定义有点区别type A int32 //类型定义,生成新的type B = int32 //别名定义,仅仅是 aliasfunc main() { var a A = 333 fmt.Println(a) var b B = 333 b = B(a) //a,b属于不同的类型,所以这里需要强制转换 fmt.Println(b)}
作用四:定义函数类型
type cb func(s string) // 定义一个函数类型//对函数类型再定义方法func (f cb) ServerCb() error{ f("cbb") fmt.Println("server cb") return nil}func main() { s :=cb(func( s string){ fmt.Println("sss", s) }) s.ServerCb()}