golang中type常用用法

golang中,type是非常重要的关键字,一般常见用法就是定义结构,接口等,但是type还有很多其它的用法,在学习中遇到了以下几种,这点简单总结记录下

  • 定义结构
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 Myint int  //定义一个新的类型,

//定义一个类型方法
func (m Myint) showValue() {
    fmt.Println("show int", m)
}

func main() {
    var m Myint = 9 //变量声明
    m.showValue()
}

新定义的类型,可以定义方法,
如上例的 showValue()
  • 别名定义

    定义和原来一样的类型,就是一个别名alias

type nameMap = map[string]interface{}

func main() {
   m :=make(nameMap)
   m["name"] = "golang"
   fmt.Printf("%v", m)
}

另外别名定义和类型定义有点区别
 
type A int32   //类型定义,生成新的
type B = int32 //别名定义,仅仅是 alias

func 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()
}

其实,这种定义方式,和实现接口的方法定义差不多,感觉这种就是让代码更清晰,如果声明太复杂,不用看上去全是很乱的这种定义。

好了,以上就是 type一些常用的用法。

转载于:https://www.cnblogs.com/smartrui/p/11425822.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值