新書推薦:
![有为有守 : 近代中国的知识人社会](http://103.6.6.69/upload/mall/productImages/y24/8/9787208186644.jpg)
《
有为有守 : 近代中国的知识人社会
》
售價:HK$
124.2
![经济学原理(漫画版)⑦](http://103.6.6.66/upload/mall/productImages/24/27/9787521765007.jpg)
《
经济学原理(漫画版)⑦
》
售價:HK$
90.9
![甲骨文丛书·日之光芒:世上最著名的炼金术抄本](http://103.6.6.66/upload/mall/productImages/24/27/9787522834115.jpg)
《
甲骨文丛书·日之光芒:世上最著名的炼金术抄本
》
售價:HK$
147.2
![汗青堂丛书143·帝国的悲剧:从君士坦丁的帝国到西罗马的衰亡](http://103.6.6.66/upload/mall/productImages/24/27/9787522526560.jpg)
《
汗青堂丛书143·帝国的悲剧:从君士坦丁的帝国到西罗马的衰亡
》
售價:HK$
114.8
![古典与文明·唐宋儒家道统系谱建构研究](http://103.6.6.66/upload/mall/productImages/24/28/9787108077714.jpg)
《
古典与文明·唐宋儒家道统系谱建构研究
》
售價:HK$
110.4
![唤醒老虎:启动自我疗愈本能 [美]彼得·莱文](http://103.6.6.66/upload/mall/productImages/24/28/9787111746676.jpg)
《
唤醒老虎:启动自我疗愈本能 [美]彼得·莱文
》
售價:HK$
79.4
![心悦读丛书·情绪疲惫的你](http://103.6.6.69/upload/mall/productImages/y24/7/9787213113741.jpg)
《
心悦读丛书·情绪疲惫的你
》
售價:HK$
66.7
![对人进行投资——人口质量经济学(诺奖)](http://103.6.6.66/upload/mall/productImages/24/28/9787100233781.jpg)
《
对人进行投资——人口质量经济学(诺奖)
》
售價:HK$
48.3
|
內容簡介: |
GO语言是专门为并发和大数据设计的语言,本书是计算机类辅导书,旨在帮助零基础编程读者从入门到精通地学习并掌握计算机编程GO语言,循序渐进地引导读者学习GO语言的基础内容和高阶核心知识,详细讲解书中示例和高阶编程内容,引导读者深入挖掘计算机编程领域,多维度思考和理解计算机网络的应用,全面、系统地学习编程知识技巧。
|
關於作者: |
零壹快学是一个集教育、培训、交流于一体的计算机学习融媒体平台,覆盖Web、APP和微信小程序等场景,为广大IT学习者提供计算机各学科的教学资源、培训课程、测评系统等。通过人工智能手段,模拟真实课堂环境,力求打造成为一个全面、权威、高效的一流计算机在线教育平台。目前,平台已开发了包括计算机编程、云计算、区块链等在内的多门课程,提供计算机等级考试在线题库系统,将陆续开发计算机技术与软件专业技术资格(水平)考试、CCIE等在线题库系统,同时拥有一支由一线互联网公司工程师、知名高校教师组成的专家团队,精心为广大IT学习者提供优质的学习资源、课程和服务。
|
目錄:
|
第1 章 走进Go………………………… 1
1.1 Go 编程语言概述… ………………… 1
1.1.1 Go 的历史… ……………………… 1
1.1.2 Go 语言特性及应用场景… ……… 2
1.1.3 使用Go 语言的项目… …………… 3
1.2 Go 语言官方文档… ………………… 4
1.3 学好Go 的建议… …………………… 5
1.4 常用软件及网站……………………… 6
1.5 小结…………………………………… 7
第2 章 安装和运行Go … …………… 8
2.1 GOROOT 和GOPATH……………… 8
2.2 在Windows 下安装Go……………… 9
2.3 在Linux 下安装Go… ……………… 11
2.4 在Mac OS 下安装Go… …………… 12
2.5 安装开发工具………………………… 13
2.5.1 GoLand 下载… …………………… 13
2.5.2 GoLand 安装… …………………… 13
2.5.3 GoLand 使用… …………………… 16
2.6 编写个Go 程序… ……………… 19
2.6.1 GoLand 编写… …………………… 19
2.6.2 文本编辑器编写…………………… 20
2.7 小结…………………………………… 21
第3 章 基本变量与类型 … ………… 22
3.1 Go 语言变量… ……………………… 22
3.1.1 声明变量…………………………… 22
3.1.2 初始化变量………………………… 23
3.1.3 变量值交换………………………… 25
3.1.4 匿名变量…………………………… 26
3.2 Go 语言数据类型… ………………… 27
3.2.1 整型………………………………… 27
3.2.2 浮点型……………………………… 28
3.2.3 字符串……………………………… 29
3.2.4 字符和转义字符…………………… 30
3.2.5 布尔型……………………………… 31
3.2.6 数据类型判断……………………… 31
3.2.7 数据类型转换……………………… 32
3.3 指针…………………………………… 34
3.3.1 声明指针…………………………… 34
3.3.2 取变量地址………………………… 34
3.3.3 获取指针所指向的内容…………… 35
3.3.4 使用指针修改值…………………… 36
3.4 其他数据类型………………………… 37
3.5 小结…………………………………… 38
3.6 知识拓展……………………………… 38
3.6.1 字符串的应用……………………… 38
3.6.2 Go 语言注释… …………………… 43
第4 章 常量与运算符 … …………… 44
4.1 常量…………………………………… 44
4.1.1 常量的定义………………………… 44
4.1.2 常量组的定义……………………… 45
4.1.3 常量枚举…………………………… 46
4.2 运算符………………………………… 47
4.2.1 算术运算符………………………… 47
4.2.2 比较运算符………………………… 49
4.2.3 赋值运算符………………………… 50
4.2.4 位运算符…………………………… 51
4.2.5 逻辑运算符………………………… 52
4.2.6 其他运算符………………………… 53
4.3 小结…………………………………… 54
4.4 知识拓展……………………………… 54
第5 章 流程控制…………………… 56
5.1 if 判断… ……………………………… 56
5.2 循环控制……………………………… 58
5.2.1 for 循环……………………………… 58
5.2.2 break 跳出循环… ………………… 59
5.2.3 continue 继续循环… ……………… 61
5.3 switch 分支…………………………… 61
5.4 goto 跳转……………………………… 63
5.5 小结…………………………………… 64
5.6 知识拓展……………………………… 64
5.6.1 斐波那契数列……………………… 64
5.6.2 循环嵌套…………………………… 67
第6 章 Go 语言内置容器…………… 69
6.1 数组…………………………………… 69
6.1.1 声明数组…………………………… 70
6.1.2 初始化数组………………………… 70
6.1.3 range 关键字… …………………… 71
6.1.4 遍历数组…………………………… 72
6.2 切片…………………………………… 72
6.2.1 从数组生成一个新的切片………… 73
6.2.2 从切片生成一个新的切片………… 74
6.2.3 直接生成一个新的切片…………… 75
6.2.4 为切片添加元素…………………… 77
6.2.5 从切片删除元素…………………… 79
6.2.6 遍历切片…………………………… 80
6.3 映射…………………………………… 81
6.3.1 声明映射…………………………… 81
6.3.2 初始化映射………………………… 82
6.3.3 遍历映射…………………………… 83
6.3.4 从映射中删除键值对……………… 84
6.4 小结…………………………………… 85
6.5 知识拓展……………………………… 86
第7 章 函数………………………… 90
7.1 声明函数……………………………… 90
7.1.1 函数参数的简写…………………… 91
7.1.2 函数返回值的简写………………… 91
7.1.3 带有变量名的返回值……………… 92
7.2 使用函数……………………………… 92
7.3 函数变量……………………………… 93
7.4 可变参数……………………………… 95
7.4.1 可变参数函数的使用……………… 95
7.4.2 可变参数与内置函数……………… 96
7.4.3 可变参数的传递…………………… 96
7.5 匿名函数和闭包……………………… 98
7.5.1 定义和使用匿名函数……………… 98
7.5.2 闭包的定义………………………… 99
7.5.3 闭包的“记忆力”………………… 99
7.6 延迟执行语句……………………… 101
7.7 小结………………………………… 103
7.8 知识拓展…………………………… 103
7.8.1 函数参数传递的本质…………… 103
7.8.2 Go 内置函数… ………………… 106
|
內容試閱:
|
第1章 走进Go 1.1 Go编程语言概述
Go语言也叫Golang,是由谷歌(Google)公司在2007年推出的一款静态编译型语言。Go语言高效、简洁、容易上手,加上它的高并发和自带垃圾回收等特性,一出现就备受大家的喜爱。目前,越来越多的公司开始推广并使用Go语言,主要将其用于服务端开发、并发编程和网络编程等。
本章将带你走进Go语言,体会Go语言的独特魅力。
1.1.1 Go的历史
Go语言起源于2007年,于2009年正式对外发布。Go语言项目主要由三位IT届著名人士参与开发:肯·汤普逊(Ken Thompson)、罗布·派克(Rob Pike)和罗伯特·格里泽默(RobertGriesemer)。此处简单介绍一下他们的贡献。
肯·汤普逊:图灵奖得主,Unix发明人,B语言(C语言前身)作者。1983年,他与丹尼斯·里奇(Dennis Ritchie)共同获得了图灵奖。2006年,他进入谷歌公司工作,与其他人共同设计了Go语言。
罗布·派克:Unix团队和Plan 9操作系统计划的成员,曾经参与过贝尔实验室九号计划、操作系统Inferno与编程语言Limbo的开发。
罗伯特·格里泽默:曾协助Java的HotSpot编译器和Chrome浏览器的JavaScript引擎V8的制作。
Go语言主要大事件如下:
2007年,Go语言雏形设计。
2009年,首次公开发布。
2010年,当选TIOBE2009年度编程语言,谷歌正式将其投入使用。
2011年,Google App Engine支持Go语言。
2017年,当选TIOBE2016年度编程语言。
截至目前,Go语言的版本为Go 1.13。
另外,Go语言还有个十分可爱的吉祥物——金花鼠(图1.1.1),由罗布·派克的妻子芮妮·弗伦奇(Renée French)绘制。
1.1.2 Go语言特性及应用场景
随着人工智能、大数据和云计算时代的到来,Python、Java和PHP等编程语言风靡盛行,C/C 等编程语言也有自己的特性和应用场景,那么作为后起之秀的Go语言究竟有哪些特性和优势?这些特性又适用于哪些应用场景呢?
1 .容易上手
Go语言上手非常容易,许多零基础的初学者在学习大约一周的时间后就可以使用Go语言完成一些既定的任务。而C/C 等语言,则需要经过几个月的时间学习才开始上手,并且学习中的大量时间都用于避免语法错误和调试代码bug。
2. 编译速度快
在Go编程语言的1.7版本更新中,通过减少编译器所使用的内存量、减少链接时间来减少总的编译时间。根据测试,这项改进和Go1.5.3相比减少了20%~30%的总编译时间。
另外,Go语言工程结构简单,没有头文件和不允许包的交叉编译等规则,这也在很大程度上减少了编译所需的时间。
3.原生支持并发
Go语言主要的特性就是从语言层面原生支持并发,无须任何第三方库。Go的并发基于
goroutine,可以理解为一种微线程。与Python的多线程性能限制于GIL全局锁不同,Go语言的并发可以充分利用CPU的资源,将goroutine合理地分配到每个CPU中,限度地使用CPU的性能。goroutine之间的通信可以使用Go语言的sync包和channel机制来实现。
4.垃圾回收
一直以来,内存管理是程序员开发中的一大难题。传统的编程语言C/C 中,程序员必须对内存进行细致的管理操作,控制内存的申请及释放,否则就可能产生内存泄漏问题。
为了解决这个问题,Go语言实现了自己的垃圾回收器,在1.3版本前采用传统的Mark and Sweep算法。Go语言在1.5的版本更新中进行了较大改进,使用了三色标记算法,进一步改善了垃圾回收的机制,使程序员更加专注于业务本身,不用把过多的精力投入到垃圾回收中。5.代码风格清晰Go语言语法在C语言的基础上进行优化,去掉了表达式和for循环中冗余的括号,强制统一了代码风格,如Go语言中,左括号必须紧接着语句不进行换行。有些开发者,特别是有其他编程语言开发经验的人,刚开始时会对这个特性感到不习惯,但随着对Go语言的不断深入熟悉,就会发现这个特性能让代码阅读者将更多精力投放到代码本身,而不是代码风格上去。由于以上特性,Go语言主要应用于以下三个方面:(1)服务端开发;(2)高并发处理;(3)网络编程。
基于以上三个方面,Go语言可以具体用于服务端网络请求接收和解析、分布式系统开发、后端API接口开发和虚拟机处理等。
1.1.3 使用Go语言的项目
Go语言在2009年首次公开发布后受到越来越多的开发者的关注,Go语言社区不断壮大,开源项目不断涌现。下面列举使用Go语言进行开发的部分项目。
1.Docker项目
网址:https://github.com/docker/docker-ce
Docker是一个开源的应用容器引擎,基于Go语言开发并遵从Apache 2.0协议开源。Docker可以让开发者打包他们的应用和依赖包到一个轻量级、可移植的容器中,也可以实现虚拟化,更重要的是容器性能开销极低。
2.Golang项目
网址:https://github.com/golang/go
Go语言自1.5版本后,可以完全使用Go语言自身来实现。对Go语言的源码研究有助于深入理解Go的底层实现,想对Go语言有持续深入了解的读者可阅读此项目。
3.Kubernetes项目
网址:https://github.com/kubernetes/kubernetes
Kubernetes是自动化容器操作的开源平台,使用Kubernetes可以进行自动化容器的部署和复制、随时扩展或收缩容器规模和容器间的负载均衡等。
4.Beego项目
网址:https://github.com/astaxie/beego
Beego是一个使用Go编写的极轻量级、高可伸缩性和高性能的Web应用框架。
5.Codis项目
网址:https://github.com/CodisLabs/codis
Codis是一个国产开源的分布式redis解决方案,对于上层的应用透明,就像连接到原生的redis服务器那样。
|
|