1分钟部署网站📞AI智能客服,大模型训练自有数据,简单好用,有效降低客服成本 广告
[TOC] # 说明 该文档为本君在学习GO语言的过程做的笔记,并非官方权威文档,仅供学习和参考。在后续的学习中会根据本人的学习进度更新文档。 # GO语言教程 Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。 Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。 # Go主要特性 * 自动垃圾回收 * 更丰富的内置类型 * 函数多返回值 * 错误处理 * 匿名函数和闭包 * 类型和接口 * 反射 * 语言交互性 ## 1、自动垃圾回收 能够像java、C#等语言自带GC,不用再为内存管理苦恼 ### 2、更丰富的内置类型 关键在于内置,像map、slice这些常用的数据类型,内置于builtin,默认包含,无需自己添加。 ### 3、函数返回多值 多值返回仅动态语言Python有此特性 ### 4、错误处理 3个重要关键字defer、panic、recover defer是函数结束后执行,呈先进后出; panic是程序出现无法修复的错误时使用,但会让defer执行完; recover会修复错误,不至于程序终止。当不确定函数不会出错时使用defer+recover ### 5、匿名函数和闭包 匿名函数就是一个没有名字的函数,本身也是一个闭包。 闭包是可以包含自由变量的代码块,这些变量不在这个代码块内或者任何全局上下文中定义,而是在定义代码块的环境中定义。 闭包的价值在于可以作为函数对象或者匿名函数,存储到变量中作为参数传递给其他函数,能够被函数动态创建和返回。 ### 6、类型和接口 类型非常接近于C语言中的结构体,也使用了struct。go语言类型不支持继承和重载,仅有封装和组合。 go语言引入了强大的“非侵入式”接口,无需指明类型实现了哪个接口。 ### 7、并发编程 go语言倡导使用消息传递来共享内存,引入了goroutine概念,这是一个协程,更轻量级的线程。与channel搭配使用。 ### 8、反射 通过反射,你可以获取对象类型的详细信息,并可动态操作对象。反射是把双刃剑,功能强大但代码可读性并不理想。若非必要,不推荐使用反射。 # GO语言用途 Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行的支持,这对于游戏服务端的开发而言是再好不过了。 # GO语言开发工具 * LiteIDE * Sublime Text * Emacs * Vim * GoLand * Eclipse * IntelliJ IDEA # GO语言开发框架 * Beego * Buffala * Echo * Gin * Revel * Iris * martini * Goji * go-rest * Circuit