作用一:定义结构

  1. type Person struct {
  2. name string
  3. age int
  4. }
  5. type Mutex struct {}
  6. type OtherMutex Mutex //定义新的类型
  7. func (m *Mutex) Lock(){
  8. fmt.Println("lock")
  9. }
  10. func (m *Mutex) Unlock(){
  11. fmt.Println("lock")
  12. }
  13. func main() {
  14. m := &OtherMutex{} //注意,OtherMutex不具有Lock和Unlock方法
  15. m.Lock()
  16. }

作用二:定义结构

  1. type Personer interface{
  2. ShowName(s string)
  3. }

作用三:别名定义

  1. type nameMap = map[string]interface{}
  2. func main() {
  3. m :=make(nameMap)
  4. m["name"] = "golang"
  5. fmt.Printf("%v", m)
  6. }
  7. //另外别名定义和类型定义有点区别
  8. type A int32 //类型定义,生成新的
  9. type B = int32 //别名定义,仅仅是 alias
  10. func main() {
  11. var a A = 333
  12. fmt.Println(a)
  13. var b B = 333
  14. b = B(a) //a,b属于不同的类型,所以这里需要强制转换
  15. fmt.Println(b)
  16. }

作用四:定义函数类型

  1. type cb func(s string) // 定义一个函数类型
  2. //对函数类型再定义方法
  3. func (f cb) ServerCb() error{
  4. f("cbb")
  5. fmt.Println("server cb")
  6. return nil
  7. }
  8. func main() {
  9. s :=cb(func( s string){
  10. fmt.Println("sss", s)
  11. })
  12. s.ServerCb()
  13. }