没有合适的资源?快使用搜索试试~ 我知道了~
首页Go语言入门:快速构建高性能服务的实战指南
Go入门指南1是一本专为初学者和进阶开发者设计的指南,它详细介绍了Go语言的起源、发展及其在软件开发领域的革新价值。Go语言诞生于对现有编程语言如C++在大型服务端开发中遇到的问题的反思,包括编译速度慢、二进制文件过大、不适合现代多核架构和网络环境,以及开发过程中的低效率和复杂性。 第1章着重于Go语言的背景,讲述了它如何在Google的开发者需求驱动下发展起来,旨在提供一种既能保持高性能和安全性,又具备简洁易学特性的新选择。Go语言借鉴了Python和Ruby的动态特性,同时保持了C和Java的稳定性,通过接口实现面向对象编程,使用goroutine和channel支持并发和并行处理。 作者利用丰富的教学经验和对多种编程语言的理解,将复杂的知识点整合成易于理解的系统化教学,确保读者在学习过程中不会感到困惑。对于初次接触编程的读者,虽然需要一定的基础知识,但无需深入掌握其他语言。书中会通过对比和实例演示,帮助读者理解Go语言与C++等语言的异同,特别是面向对象编程的概念。 第2章则关注于Go语言的安装和运行环境,介绍不同平台和架构上的兼容性,确保读者能够在合适的环境中开始他们的Go编程之旅。此外,该章节还会指导读者如何配置必要的工具链,以便于实践和项目开发。 这本书不仅是一份Go语言的基础教程,也是对编程语言设计理念和实践策略的一次深入探讨。通过阅读这本书,无论是初学者还是寻求新挑战的开发者,都能收获到Go语言带来的高效、优雅和现代的编程体验。
资源详情
资源推荐
![](https://csdnimg.cn/release/download_crawler_static/86284343/bg10.jpg)
在完成安装包的安装之后,你只需要配置 $GOPATH 这一个环境变量就可以开始使用Go语言进行开发了,其它的环境变量安装包均会
进行自动设置。在默认情况下,Go将会被安装在目录 c:\go 下,但如果你在安装过程中修改安装目录,则可能需要手动修改所有的
环境变量的值。
如果你想要测试安装,则可以使用指令 gorun 运行hello_world1.go。
如果发生错误 fatalerror:can’tfindimport:fmt 则说明你的环境变量没有配置正确。
如果你想要在Windows下使用cgo(调用C语言写的代码),则需要安装MinGW,一般推荐安装TDM-GCC。如果你使用的是
64位操作系统,请务必安装64位版本的MinGW。安装完成进行环境变量等相关配置即可使用。
在在Windows下运行在虚拟机里的下运行在虚拟机里的Linux系统上安装系统上安装Go:
如果你想要在Windows下的虚拟机里的Linux系统上安装Go,你可以选择使用虚拟机软件VMware,下载VMwareplayer,
搜索并下载一个你喜欢的Linux发行版镜像,然后安装到虚拟机里,安装Go的流程参考第2.3节中的内容。
目录
上一节:在MacOSX上安装Go
下一节:安装目录清单#2.6安装目录清单
你的Go安装目录( $GOROOT )的文件夹结构应该如下所示:
README.md,AUTHORS,CONTRIBUTORS,LICENSE
/bin :包含可执行文件,如:编译器,Go工具
/doc :包含示例程序,代码工具,本地文档等
/lib :包含文档模版
/misc :包含与支持Go编辑器有关的配置文件以及cgo的示例
/os_arch :包含标准库的包的对象文件( .a )
/src :包含源代码构建脚本和标准库的包的完整源代码(Go是一门开源语言)
/src/cmd :包含Go和C的编译器和命令行脚本
目录
上一节:在Windows上安装Go
下一节:Go运行时(runtime)#2.7Go运行时(runtime)
尽管Go编译器产生的是本地可执行代码,这些代码仍旧运行在Go的runtime(这部分的代码可以在runtime包中找到)当中。
这个runtime类似Java和.NET语言所用到的虚拟机,它负责管理包括内存分配、垃圾回收(第10.8节)、栈处理、
goroutine、channel、切片(slice)、map和反射(reflection)等等。
runtime主要由C语言编写(Go1.5开始自举),并且是每个Go包的最顶级包。你可以在目录 $GOROOT/src/runtime 中找到相关
内容。
垃圾回收器垃圾回收器Go拥有简单却高效的标记-清除回收器。它的主要思想来源于IBM的可复用垃圾回收器,旨在打造一个高效、低延迟的
并发回收器。目前gccgo还没有回收器,同时适用gc和gccgo的新回收器正在研发中。使用一门具有垃圾回收功能的编程语言不
代表你可以避免内存分配所带来的问题,分配和回收内容都是消耗CPU资源的一种行为。
Go的可执行文件都比相对应的源代码文件要大很多,这恰恰说明了Go的runtime嵌入到了每一个可执行文件当中。当然,在部署
到数量巨大的集群时,较大的文件体积也是比较头疼的问题。但总得来说,Go的部署工作还是要比Java和Python轻松得多。因
为Go不需要依赖任何其它文件,它只需要一个单独的静态文件,这样你也不会像使用其它语言一样在各种不同版本的依赖文件之间
混淆。
目录
上一节:安装目录清单
下一节:Go解释器#2.8Go解释器
因为Go具有像动态语言那样快速编译的能力,自然而然地就有人会问Go语言能否在REPL(read-eval-printloop)编程环境下
链接链接
链接链接
链接链接
![](https://csdnimg.cn/release/download_crawler_static/86284343/bg11.jpg)
实现。SebastienBinet已经使用这种环境实现了一个Go解释器,你可以在这个页面找到:https://github.com/sbinet/igo。
目录
上一节:Go运行时(runtime)
下一章:编辑器、集成开发环境与其它工具
因为Go语言还是一门相对年轻的编程语言,所以不管是在集成开发环境(IDE)还是相关的插件方面,发展都不是很成熟。不过目
前还是有一些IDE能够较好地支持Go的开发,有些开发工具甚至是跨平台的,你可以在Linux、MacOSX或者Windows下工
作。
你可以通过查阅编辑器和IDE扩展页面来获取Go开发工具的最新信息。
目录
上一章:Go解释器
下一节:Go开发环境的基本要求#3.1Go开发环境的基本要求
这里有一个你可以期待你用来开发Go的集成开发环境有哪些特性的列表,从而替代你使用文本编辑器写代码和命令行编译与链接程
序的方式。
1. 语法高亮是必不可少的功能,这也是为什么每个开发工具都提供配置文件来实现自定义配置的原因。
2. 可以自动保存代码,至少在每次编译前都会保存。
3. 可以显示代码所在的行数。
4. 拥有较好的项目文件纵览和导航能力,可以同时编辑多个源文件并设置书签,能够匹配括号,能够跳转到某个函数或类型的定义
部分。
5. 完美的查找和替换功能,替换之前最好还能预览结果。
6. 可以注释或取消注释选中的一行或多行代码。
7. 当有编译错误时,双击错误提示可以跳转到发生错误的位置。
8. 跨平台,能够在Linux、MacOSX和Windwos下工作,这样就可以专注于一个开发环境。
9. 最好是免费的,不过有些开发者还是希望能够通过支付一定金额以获得更好的开发环境。
10. 最好是开源的。
11. 能够通过插件架构来轻易扩展和替换某个功能。
12. 尽管集成开发环境本身就是非常复杂的,但一定要让人感觉操作方便。
13. 能够通过代码模版来简化编码过程从而提升编码速度。
14. 使用Go项目的概念来浏览和管理项目中的文件,同时还要拥有构建系统的概念,这样才能更加方便的构建、清理或运行我们建
立的程序或项目。构建出的程序需要能够通过命令行或IDE内部的控制台运行。
15. 拥有断点、检查变量值、单步执行、逐过程执行标识库中代码的能力。
16. 能够方便的存取最近使用过的文件或项目。
17. 拥有对包、类型、变量、函数和方法的智能代码补全的功能。
18. 能够对项目或包中的代码建立抽象语法树视图(AST-view)。
19. 内置Go的相关工具。
20. 能够方便完整地查阅Go文档。
21. 能够方便地在不同的Go环境之间切换。
22. 能够导出不同格式的代码文件,如:PDF,HTML或格式化后的代码。
23. 针对一些特定的项目有项目模板,如:Web应用,AppEngine项目,从而能够更快地开始开发工作。
24. 具备代码重构的能力。
25. 集成像hg或git这样的版本控制工具。
26. 集成GoogleAppEngine开发及调试的功能。
目录
上一节:编辑器、集成开发环境与其它工具
下一节:编辑器和集成开发环境#3.2编辑器和集成开发环境
链接链接
3.0编辑器、集成开发环境与其它工具编辑器、集成开发环境与其它工具
链接链接
链接链接
![](https://csdnimg.cn/release/download_crawler_static/86284343/bg12.jpg)
这些编辑器包含了代码高亮和其它与Go有关的一些使用工具:Emacs、Vim、Xcode6、KDKate、TextWrangler、BBEdit、
McEdit、TextMate、TextPad、JEdit、SciTE、Nano、Notepad++、Geany、SlickEdit、IntelliJIDEA和Sublime
Text2。
你可以将Linux的文本编辑器GEdit改造成一个很好的Go开发工具,详见页面:http://gohelp.wordpress.com/。
SublimeText是一个革命性的跨平台(Linux、MacOSX、Windows)文本编辑器,它支持编写非常多的编程语言代码。对于
Go而言,它有一个插件叫做GoSublime来支持代码补全和代码模版。
这里还有一些更加高级的Go开发工具,其中一些是以插件的形式利用本身是作为开发Java的工具。
IntelliJIdeaPlugin是一个IntelliJIDEA的插件,具有很好的操作体验和代码补全功能。
LiteIDE这是一款专门针对Go开发的集成开发环境,在编辑、编译和运行Go程序和项目方面都有非常好的支持。同时还包括了对
源代码的抽象语法树视图和一些内置工具(此开发环境由国人vfc大叔开发)。
GoClipse是一款EclipseIDE的插件,拥有非常多的特性以及通过GoCode来实现代码补全功能。
如果你对集成开发环境都不是很熟悉,那就使用LiteIDE吧,另外使用GoClipse或者IntelliJIdeaPlugin也是不错的选择。
代码补全代码补全一般都是通过内置GoCode实现的(如:LieteIDE、GoClipse),如果需要手动安装GoCode,在命令行输入指令
goget-ugithub.com/nsf/gocode 即可(务必事先配置好Go环境变量)
。
接下来会对这三个集成开发环境做更加详细的说明。
这款IDE的当前最新版本号为X27,你可以从GitHub页面获取详情。
LiteIDE是一款非常好用的轻量级Go集成开发环境(基于QT、Kate和SciTE),包含了跨平台开发及其它必要的特性,对代码
编写、自动补全和运行调试都有极佳的支持。它采用了Go项目的概念来对项目文件进行浏览和管理,它还支持在各个Go开发环境
之间随意切换以及交叉编译的功能。
同时,它具备了抽象语法树视图的功能,可以清楚地纵览项目中的常量、变量、函数、不同类型以及他们的属性和方法。
图3.1LiteIDE代码编辑界面和抽象语法树视图
3.2.1LiteIDE
3.2.2GoClipse
![](https://csdnimg.cn/release/download_crawler_static/86284343/bg13.jpg)
该款插件的当前最新版本号为0.9.1,你可以从GitHub页面获取详情。
其依附于著名的Eclipse这个大型开发环境,虽然需要安装JVM运行环境,但却可以很容易地享有Eclipse本身所具有的诸多功
能。这是一个非常好的编辑器,完善的代码补全、抽象语法树视图、项目管理和程序调试功能。
图3.2GoClipse代码编辑界面、抽象语法树视图和项目管理
目录
上一节:Go开发环境的基本要求
下一节:调试器#3.3调试器
应用程序的开发过程中调试是必不可少的一个环节,因此有一个好的调试器是非常重要的,可惜的是,Go在这方面的发展还不是很完
善。目前可用的调试器是gdb,最新版均以内置在集成开发环境LiteIDE和GoClipse中,但是该调试器的调试方式并不灵活且操
作难度较大。
如果你不想使用调试器,你可以按照下面的一些有用的方法来达到基本调试的目的:
1. 在合适的位置使用打印语句输出相关变量的值( print / println 和 fmt.Print / fmt.Println / fmt.Printf )。
2. 在 fmt.Printf 中使用下面的说明符来打印有关变量的相关信息:
%+v 打印包括字段在内的实例的完整信息
%#v 打印包括字段和限定类型名称在内的实例的完整信息
%T 打印某个类型的完整说明
3. 使用panic语句(第13.2节)来获取栈跟踪信息(直到panic时所有被调用函数的列表)。
4. 使用关键字defer来跟踪代码执行过程(第6.4节)。
目录
上一节:编辑器和集成开发环境
下一节:构建并运行Go程序#3.4构建并运行Go程序
在大多数IDE中,每次构建程序之前都会自动调用源码格式化工具 gofmt 并保存格式化后的源文件。如果构建成功则不会输出任何
信息,而当发生编译时错误时,则会指明源码中具体第几行出现了什么错误,如: adeclaredandnotused 。一般情况下,你可以双
链接链接
链接链接
![](https://csdnimg.cn/release/download_crawler_static/86284343/bg14.jpg)
击IDE中的错误信息直接跳转到发生错误的那一行。
如果程序执行一切顺利并成功退出后,将会在控制台输出 Programexitedwithcode0 。
从Go1版本开始,使用Go自带的更加方便的工具来构建应用程序:
gobuild 编译并安装自身包和依赖包
goinstall 安装自身包和依赖包
目录
上一节:调试器
下一节:格式化代码#3.5格式化代码
Go开发团队不想要Go语言像许多其它语言那样总是在为代码风格而引发无休止的争论,浪费大量宝贵的开发时间,因此他们制作了
一个工具: gofmt ( gofmt )。这个工具可以将你的源代码格式化成符合官方统一标准的风格,属于语法风格层面上的小型重构。遵
循统一的代码风格是Go开发中无可撼动的铁律,因此你必须在编译或提交版本管理系统之前使用 gofmt 来格式化你的代码。
尽管这种做法也存在一些争论,但使用 gofmt 后你不再需要自成一套代码风格而是和所有人使用相同的规则。这不仅增强了代码的可
读性,而且在接手外部Go项目时,可以更快地了解其代码的含义。此外,大多数开发工具也都内置了这一功能。
Go对于代码的缩进层级方面使用tab还是空格并没有强制规定,一个tab可以代表4个或8个空格。在实际开发中,1个tab应
该代表4个空格,而在本身的例子当中,每个tab代表8个空格。至于开发工具方面,一般都是直接使用tab而不替换成空格。
在命令行输入 gofmt–wprogram.go 会格式化该源文件的代码然后将格式化后的代码覆盖原始内容(如果不加参数 -w 则只会打印格
式化后的结果而不重写文件); gofmt-w*.go 会格式化并重写所有Go源文件; gofmtmap1 会格式化并重写map1目录及其子目
录下的所有Go源文件。
gofmt 也可以通过在参数 -r 后面加入用双引号括起来的替换规则实现代码的简单重构,规则的格式: <原始内容>-><替换内容> 。
实例:
gofmt-r'(a)->a'–w*.go
上面的代码会将源文件中没有意义的括号去掉。
gofmt-r'a[n:len(a)]->a[n:]'–w*.go
上面的代码会将源文件中多余的 len(a) 去掉。(译者注:了解切片(译者注:了解切片(slice)之后就明白这为什么是多余的了)之后就明白这为什么是多余的了)
gofmt–r'A.Func1(a,b)->A.Func2(b,a)'–w*.go
上面的代码会将源文件中符合条件的函数的参数调换位置。
如果想要了解有关 gofmt 的更多信息,请访问该页面:http://golang.org/cmd/gofmt/。
目录
上一节:构建并运行Go程序
下一节:生成代码文档
godoc 工具会从Go程序和包文件中提取顶级声明的首行注释以及每个对象的相关注释,并生成相关文档。
它也可以作为一个提供在线文档浏览的web服务器,http://golang.org就是通过这种形式实现的。
链接链接
链接链接
3.6生成代码文档生成代码文档
剩余1444页未读,继续阅读
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![epub](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/d0671c2a6202462abe6d3e9abec8b76b_weixin_35782943.jpg!1)
李诗旸
- 粉丝: 27
- 资源: 329
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
会员权益专享
最新资源
- 电力电子系统建模与控制入门
- SQL数据库基础入门:发展历程与关键概念
- DC/DC变换器动态建模与控制方法解析
- 市***专有云IaaS服务:云主机与数据库解决方案
- 紫鸟数据魔方:跨境电商选品神器,助力爆款打造
- 电力电子技术:DC-DC变换器动态模型与控制
- 视觉与实用并重:跨境电商产品开发的六重价值策略
- VB.NET三层架构下的数据库应用程序开发
- 跨境电商产品开发:关键词策略与用户痛点挖掘
- VC-MFC数据库编程技巧与实现
- 亚马逊新品开发策略:选品与市场研究
- 数据库基础知识:从数据到Visual FoxPro应用
- 计算机专业实习经验与项目总结
- Sparkle家族轻量级加密与哈希:提升IoT设备数据安全性
- SQL数据库期末考试精选题与答案解析
- H3C规模数据融合:技术探讨与应用案例解析
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)