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一些常用的用法。

最新文章

  1. .NET 工具类ObjectDumper 打印对象
  2. PHP 依赖注入,从此不再考虑加载顺序
  3. JS中关于比较运算符的问题(a===b)
  4. C#:org.in2bits.MyXls 文本格式日期 转换,以及设置单元格格式,保留两位小数点
  5. SQL防注入程序 v1.0
  6. 使用 Redis 实现分布式系统轻量级协调技术
  7. 使用Eclipse开发,Java Compiler中Annotation Processin不出现的解决方案
  8. 使用ttXactAdmin、ttSQLCmdCacheInfo、ttSQLCmdQueryPlan获取SQL相关具体信息[TimesTen运维]
  9. C# 并行编程 之 并发集合 (.Net Framework 4.0)(转)
  10. 克鲁斯卡尔(Kruskal)算法
  11. [原]性能优化之Hibernate缓存讲解、应用和调优
  12. 漏掉的账目(用C语言去重)
  13. JavaScript的异步机制
  14. javascript获取整数随机数
  15. Android-Bluetooth Low Energy(BLE)
  16. [Go] golang无缓冲通道实现工作池控制并发
  17. admin 自定义字段颜色 并加以简单判断
  18. 【Tomcat】面向初级 Web 开发人员的 Tomcat
  19. js中$
  20. pca总结,非常详细

热门文章

  1. React躬行记(1)——函数式编程
  2. 分布式应用监控: SkyWalking 快速接入实践
  3. linux远程登入/远程上传文件
  4. docker容器的学习笔记
  5. Linux日志中出现大量dhclient mesage浅析
  6. MongoDB的模糊查询操作(类关系型数据库的 like 和 not like)
  7. 自写的简单MD5加密算法
  8. USB HOST与 USB OTG的区别及工作原理
  9. Linux uevent分析、用户接收uevent以及mdev分析
  10. awk命令使用整理