第1章:走进Golang

近期一直在看Golang的视频,然后找到了一套还算不错的入门视频,在这里分享给大家。

Go语言实战教程(赵珊珊):
链接:https://pan.baidu.com/s/1EkvH8TVbY2hpUGqnreqBxw?pwd=6666
提取码:6666

Golang引入

【1】简介:

Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种计算机编程语言语言。

【2】设计初衷:

Go语言是谷歌推出的一种的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发Go,是因为过去10多年间软件开发的难度令人沮丧。派克表示,和今天的C++或C一样,Go是一种系统语言。他解释道,”使用它可以进行快速开发,同时它还是一个真正的编译语言,我们之所以现在将其开源,原因是我们认为它已经非常有用和强大。”

\1) 计算机硬件技术更新频繁,性能提高很快。目前主流的编程语言发展明显落后于硬件,不能合理利用多核多CPU的优势提升软件系统性能。

\2) 软件系统复杂度越来越高,维护成本越来越高,目前缺乏一个足够简洁高效的编程语言。

\3) 企业运行维护很多c/c++的项目,c/c++程序运行速度虽然很快,但是编译速度确很慢,同时还存在内存泄漏的一系列的困扰需要解决。

【3】应用领域:

img

【4】用go语言的公司:

1、Google

这个不用多做介绍,作为开发Go语言的公司,当仁不让。Google基于Go有很多优秀的项目,比如:https://github.com/kubernetes/kubernetes ,大家也可以在Github上 https://github.com/google/ 查看更多Google的Go开源项目。

2、Facebook

Facebook也在用,为此他们还专门在Github上建立了一个开源组织facebookgo,大家可以通过https://github.com/facebookgo访问查看facebook开源的项目,比如著名的是平滑升级的grace。

3、腾讯

腾讯作为国内的大公司,还是敢于尝试的,尤其是Docker容器化这一块,他们在15年已经做了docker万台规模的实践,具体可以参考http://www.infoq.com/cn/articles/tencent-millions-scale-docker-application-practice

主要职责是:

负责腾讯游戏蓝鲸平台后台开发工作

负责容器相关的开发工作

和蓝鲸平台,容器开发有关。腾讯作为主要使用C/C++的公司,使用Go会方便很多,也有很多优势,不过日积月累的C/C++代码很难改造,也不敢动,所以新业务会在Go方面尝试。

4、百度

目前所知的百度的使用是在运维这边,是百度运维的一个BFE项目,负责前端流量的接入。他们的负责人在2016年有分享,大家可以看下这个 http://www.infoq.com/cn/presentations/application-of-golang-in-baidu-frontend .

其次就是百度的消息系统,从其最近的Golang招聘介绍就可以看出来.

负责公司手百消息通讯系统服务器端开发及维护

5、京东

京东云消息推送系统、云存储,以及京东商城等都有使用Go做开发。

6、小米

小米对Golang的支持,莫过于运维监控系统的开源,也就是 http://open-falcon.com/

此外,小米互娱、小米商城、小米视频、小米生态链等团队都在使用Golang。

7、360

360对Golang的使用也不少,一个是开源的日志搜索系统Poseidon,托管在Github上,https://github.com/Qihoo360/poseidon.

还有360的推送团队也在使用,他们还写了篇博文在Golang的官方博客上 https://blog.golang.org/qihoo。

360直播在招聘Golang开发工程师。

美团、滴滴、新浪、阿里、京东以及七牛等。一般的选择,都是选择用于自己公司合适的产品系统来做,比如消息推送的、监控的、容器的等,Golang特别适合做网络并发的服务,这是他的强项,所以也是被优先用于这些项目。

【5】前景:

img

Golang简史

【1】开发团队:

罗伯特·格瑞史莫(Robert Griesemer),罗勃·派克(Rob Pike)及肯·汤普逊(Ken Thompson)于2007年9月开始设计Go,稍后Ian Lance Taylor、Russ Cox加入项目。

img

【2】Go语言发展简史

2007年,谷歌工程师Rob Pike, Ken Thompson和Robert Grisemer开始设计一门全新的语言,这是Go语言的最初原型。

2009年11月,Google将Go语言以开放源代码的方式向全球发布。

2015年8月,Go1.5版发布,本次更新中移除了”最后残余的c代码”

2017年2月,Go语言Go 1.8版发布。

2017年8月,Go语言Go 1.9版发布。

2018年2月,Go语言Go1.10版发布。

2018年8月,Go语言Go1.11版发布。

2019年2月,Go语言Go1.12版发布。

2019年9月,Go语言Go1.13版发布。

2020年2月,Go语言Go1.14版发布。

2020年8月,Go语言Go1.15版发布。

….一直迭代

【2】Go语言的吉祥物 - 金花鼠Gordon。

img

开发工具介绍

【1】工具介绍:

\1) visual studio code, Microsoft产品(简称VSCode):一个运行于Mac Os、Windows和Linux 之上的,默认提供Go语言的语法高亮,安装Go语言插件,还可以支持智能提示,编译运行等功能。

\2) Sublime Text,可以免费使用,默认也支持Go代码语法高亮,只是保存次数达到一定数量之后就会提示是否购买,点击取消继续用,和正式注册版本没有任何区别

\3) Vim: Vim是从vi发展出来的一个文本编辑器,代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用

\4) Emacs : Emacs传说中的神器,她不仅仅是一个编辑器,因为功能强大,可称它为集成开发环境

\5) Eclipse IDE工具,开源免费,并提供GoEclipse插件

\6) LitelDE,LitelDE是一款专门为Go语言开发的跨平台轻量级集成开发环境(IDE),是中国人开发的。

\7) JetBrains公司的产品:PhpStrom、WebStrom和PyCharm等IDE工具,都需要安装Go插件。

【2】VSCode的安装:

下载vscode安装软件

https://code.visualstudio.com/download

【3】安装过程:

img

img

img

img

img

img

img

【4】使用VSCode:

(1)双击打开

(2)在盘符建立一个文件夹:gocode

(3)在VSCode中打开文件夹:

img

(4)创建go文件:

img

(5)开始编写代码:

img

(6)注意保存代码:

ctrl+s

开发环境搭建

【1】搭建Go开发环境 - 安装和配置SDK

基本介绍:

\1) SDK的全称(Software Development Kit 软件开发工具包)

\2) SDK是提供给开发人员使用的,其中包含了对应开发语言的工具包。

【2】SDK下载

\1) Go语言的官网为: golang.org ,无法访问,需要翻墙。

\2) SDK下载地址 : Golang中文社区:https://studygolang.com/dl (1.15.6版本)

【3】安装SDK:

请注意:安装路径不要有中文或者特殊符号如空格等

SDK安装目录建议:一般我安装在d:/golang_sdk安装时 , 基本上是傻瓜式安装,解压就可以使用

(1)解压zip:

img

img

go整个目录就是sdk

(2)go目录下:

img

DOS命令讲解

【1】DOS操作系统

–Microsoft公司推出的操作系统。(在windows之前的操作系统)

–DOS是英文”Disk Operating System”的缩写,其中文含意是”磁盘操作系统”.

–DOS是单用户、单任务的操作系统.(只能执行一个任务)

img

【2】DOS命令

–在windows中,我们通过鼠标菜单等来操作系统,而在dos操作系统中,要通过dos命令来操作系统。

–是DOS操作系统的命令,是一种面向磁盘的操作命令,

–不区分大小写。

【3】命令学习:

windows给我们保留了类似dos系统的操作界面,可以直接操作磁盘!

dos 也是一种操作系统,是在windows出现以前用的,后来windows出来后基本没人用了,但是当windows崩溃的时候,还是要的dos方式解决,它是一种纯命令方式,cmd其实就是在windows状态下进入dos方式。

控制命令台:win+r—>cmd

img

【4】具体dos命令:

(1)切换盘符: c: d: e: 大小写没有区分

(2)显示详细信息:dir

img

(3)改变当前目录:cd

img

(4)

. 当前目录

.. 代表上一层目录

img

img

(5)清屏:cls

(6)切换历史命令:上下箭头

(7)补全命令: tab按键

(8)创建目录:md

   删除目录:rd

img

(9)复制文件命令:copy:

img

(10)删除文件:del

del后面如果接的是文件夹/目录:那么删除的就是这个文件夹下的文件,而不是文件夹

img

测试SDK环境搭建成功

【1】进入控制命令台: win+R –>cmd

img

【2】证明SDK环境成功:

img

【3】如果我想要在任意的路径下执行某个命令,需要将这个命令所在的目录配置到环境变量path中去

将命令“注册”到当前的计算机中:

解决如下错误:

img

出错原因:就是没有配置环境变量,然后你想在任意的路径下执行go,不行

【4】解决办法:配置path环境变量:

img

【5】再次验证path是否好用:(注意:控制命令台需要重启)

img

第一段程序:HelloWorld快速入门

【1】go基本目录结构:

img

【2】在VSCode下写代码:在VSCode中打开上面的基本目录:

img

【3】创建go源文件:

img

【4】开始写代码: 第一个HelloWorld :

img

【5】对源文件test.go进行编译:go build

img

【6】执行操作:

img

【7】通过go run直接可以帮我们编译 执行 源文件:

img

Golang执行流程

【1】执行流程分析:

img

【2】上述两种执行流程的方式区别

1)在编译时,编译器会将程序运行依赖的库文件包含在可执行文件中,所以,可执行文件

变大了很多。

img

2)如果我们先编译生成了可执行女件,那么我们可以将该可执行文件拷贝到没有go开发环

境的机器上,仍然可以运行

3)如果我们是直接go run go源代码,那么如果要在另外一个机器上这么运行,也需要go

开发环境,否则无法执行。

\4) go run运行时间明显要比第一种方式 长一点点

【3】编译注意事项:

编译后的文件可以另外指定名字:

img

语法注意事项

(1)源文件以”go”为扩展名。

(2)程序的执行入口是main()函数。

(3)严格区分大小写。

(4)方法由一条条语句构成,每个语句后不需要分号(Go语言会在每行后自动加分号),这也体现出Golang的简洁性。

(5)Go编译器是一行行进行编译的,因此我们一行就写一条语句,不能把多条语句写在同一个,否则报错

(6)定义的变量或者import的包如果没有使用到,代码不能编译通过。

(7)大括号都是成对出现的,缺一不可

注释

【1】注释的作用:

用于注解说明解释程序的文字就是注释,注释提高了代码的阅读性;

注释是一个程序员必须要具有的良好编程习惯。

将自己的思想通过注释先整理出来,再用代码去体现。

【2】Golang中注释类型:

Go支持c语言风格的/**/块注释,也支持c++风格的//行注释。行注释更通用,块注释主要用于针对包的详细说明或者屏蔽大块的代码

(1)行注释 // VSCode快捷键:ctrl+/ 再按一次取消注释

(2)块注释(多行注释) /**/ VSCode快捷键:shift+alt+a 再按一次取消注释

​ 注意:块注释中不可以嵌套块注释

提示:官方推荐使用行注释 //

代码风格

【1】注意缩进

向后缩进:tab

向前取消缩进:shift+tab

通过命令完成格式化操作:

img

【2】成对编程 {} () “” ‘’

【3】运算符两边加空白

img

【4】注释:官方推荐行注释//

【5】以下代码是错误的:

img

原因:go的设计者想要开发者有统一的代码风格,一个问题尽量只有一个解决方案是最好的

【6】行长约定:

一行最长不超过80个字符,超过的请使用换行展示,尽量保持格式优雅

img

API

img

Go语言提供了大量的标准库,因此 google 公司也为这些标准库提供了相应的API文档,用于告诉开发者如何使用这些标准库,以及标准库包含的方法。官方位置:https://golang.org

Golang中文网在线标准库文档: https://studygolang.com/pkgdoc

img

函数对应的源码查看:

img

也可以使用离线API:

img