go语言是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。但是学习任何语言不能因为它的简单而放松学习状态,所有的语言都是需要自己努力学习去争取的,今天的努力会体现明天的结果,下面我们一起开始学习go语言吧!!
##1.1、编程与编程语言
作为任何一门编程语言的开端,我们首先需要搞明白的是:编程的目的是什么?什么是编程语言?什么是编程?
###1.1.1、编程的目的
计算机的发明,是为了用机器解放人力,并最终完全取代人力,而编程的目的就是将人类的思维逻辑按照某种计算机能够识别的表达方式传递给计算机,从而让计算机像人一样去工作。
###1.1.2、什么是编程语言
上面提及的能够被计算机所识别的表达方式即编程语言,语言是沟通的介质,而编程语言是程序员与计算机沟通的介质。在编程的世界里,计算机更像是人的奴隶,人类用编程语言去奴役计算机,让计算机完成主人交给它的任务。
###1.1.3、什么是编程
编程就是程序员根据需求把自己的思维逻辑按照某种编程语言的语言格式编写下来,产生出的结果就是一堆文件,文件里是一堆字符。
##1.2、编程语言的分类
###1.2.1按照语言本身分类:
1、机器语言:
站在计算机(奴隶)的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件。(计算机各硬件的运行基于电流,电流脉冲有强弱之分,人们通过不同强弱的组合来实现硬件之间的信息传递。二进制编程因运而生,它只有0和1,0表示弱脉冲,1表示强脉冲)
2、汇编语言:
站在计算机(奴隶)的角度,简写的英文标识符取代二进制去编写程序,本质仍然是直接操作硬件。
(纯粹由01组成的机器语言十分复杂,不方便阅读和修改,于是就用简写的英文标识符取代01,但其本质仍然是直接操作硬件)
比如:
操作:把寄存器AX的内容传递给AX
1000100111011000 机器指令
mov ax,bx 汇编指令
3、高级语言:
站在人(奴隶主)的角度,说人话,即用人类的字符去编写程序,屏蔽了硬件操作
高级语言更贴近人类语言,因而造成了:它必须被翻译成计算机能读懂二进制后,才能被执行,
###1.2.2按照翻译方式分类:
**1、编译型语言(需要编译器,相当于用谷歌翻译):**如C,执行速度快,调试麻烦
**2. 解释型语言(需要解释器,相当于同声传译):**如python,执行速度慢,调试方便
###1.2.3总结:
1、机器语言:
优点:最底层,执行速度最快
缺点:最复杂,开发效率最低
2、汇编语言:
优点:比较底层,执行速度最快
缺点:缺点是复杂,开发效率最低
3、高级语言:
编译型语言执行速度快,不依赖语言环境运行,跨平台差
解释型跨平台好,一份代码,到处使用,缺点是执行速度慢,依赖解释器运行
##1.3、go语言介绍
Go语言亦叫Golong语言,是由谷歌Goggle公司推出。
主要开发者有:肯.汤姆逊(Ken Thompson)、罗布.派克(Rob Pike)和罗伯特.格里泽默(Robert Griesemer)。
根据Go语言开发者自述,近10多年,从单机时代的C语言到现在互联网时代的Java,都没有令人满意的开发语言,而 C++往往给人的感觉是,花了100%的经历,却只有60%的开发效率,产出比太低,Java和C#的哲学又来源于C++。并且,随着硬件的不断升级,这些语言不能充分的利用硬件及CPU。因此,一门高效、简洁、开源的语言诞生了。
Go语言是非常有潜力的语言,是因为它的应用场景是目前互联网非常热门的几个领域,比如区块链开发、大型游戏服务端开发、分布式/云计算开发。像Goggle、阿里、京东等互联网公司都开始用Go语言开发自己的产品。
原生使用go语言开发的部分项目:
1、Docker项目
网址:https://github.com/docker/docker
介绍:Docker是一种操作系统层面的虚拟化技术,可以在操作系统和应用程序之间进行隔离,也可以称之为容器。Docker可以在一台物理服务器上快速运行一个或多个实例。例如,启动一个CentOS操作系统,并在其内部命令行执行指令后结束,整个过程就像自己在操作系统一样高效。
2、golang项目
网址:https://github.com/golang/go
介绍:Go语言的早期源码使用C语言和汇编语言写成。从Go1.5版本自举后,完成使用Go语言自身进行编写。Go语言的源码对了解Go语言的底层调度有极大的参考意义,建议希望对Go语言有深入了解的读者读一读。
3、Kubernetes项目
网址:https://github.com/kubernetes/kubernetes
介绍:Google公司开发的构建于Docker之上的容器调度服务,用户可以通过Kubernetes集群进行云端容器集群管理。
4、etcd项目
网址:https://github.com/coreos/etcd
介绍:一款分布式、可靠的KV存储系统,可以快速进行云配置。
5、beego项目
网址:https://gitchub.com/astaxie/beego
介绍:beego是一个类似Python的Tornado框架,采用了RESTFul的设计思路,使用Go语言编写的一个极轻量级、高可伸缩性和高性能的Web应用框架。
6、martini项目
网址:https://github.com/go-martini/martini
介绍:一款快速构建模块化的Web应用的Web框架
7、codis项目
网址:https://github.com/CodisLabs/codis
介绍:国产的优秀分布式Redis解决方案
8、delve项目
网址:https://github.com/derekpaker/delve
介绍:Go语言强大的调试器,被很多集成环境和编辑器整合
##1.4安装go开发包及集成开发环境
###1.4.1、安装go开发包
要学习Go语言,首先得学会Go语言开发包的安装和使用
1、下载开发包
建议去go语言中文网下载,网址:https://studygolang.com/dl
下图是下载页面及包介绍
2、Windows版安装
一路next就OK,建议安装在C盘
在cmd命令行窗口输入“go version”可以查看当前Go版本,用以检测是否安装成功
2、Linux版安装
a、将go1.11.linux-amd64.tar.gz解压到/user/local/go下,可以用下列命令来完成:
tar -C /user/local -xzf go1.11.linux-amd64.tar.gz
b、将/user/local/go/bin目录添加到PATH环境变量中,可以使用以下命令来完成:
export PATH=$PATH:/user/local/go/bin
c、使用go env指令来查看Go压缩包是否安装成功
###1.4.2、搭建集成开发环境
集成开发环境可以大大的提高程序员的开发效率。这里推荐使用由Jetbrains公司开发的goland
1、下载及安装
土豪请支持正版,到官方网站上下载:https://www.jetbrains.com/go/
非土豪自行百度goland破解,相关资料很多很详细。
安装过程依旧很简单,一路next即可
2、设置GOROOT
goland的正常运行依赖于go语言开发包,GOROOT就是用来指定GO开发包的,需要设置为Go语言的安装路径。goland正常情况下会自动识别,但如果编译错误,就需要手动设置GOROOT,步骤如下:
3、设置GOPATH(后面章节会进行讲解)
GOPATH是需要指定一个或者多个工作区目录(文件夹)的路径。工作区是我们自定义的工作空间,我们编写的代码和编译后产生的可执行文件(windows中以.exe结尾的文件)都会被放在这个目录中,即工作空间
步骤:
1、手动在D盘中建立文件夹GoWorks(这个名称可以自定义),并在Goworks下建立三个子文件夹,分别命名为src,bin,pkg
2、在file–setting–Go–GOPATH中找到Progect GOPATH,然后点击右边的“+”号,添加自己的工作空间D:\GoWorks
工作空间可以放在你喜欢的任意位置,便于你记忆和查找就行,但建议和go开发包的安装路径分开。