Appearance
GO语言介绍
1.简介:
Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种计算机编程语言语言。
2.设计初衷:
Go语言是谷歌推出的一种的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发Go,是因为过去10多年间软件开发的难度令人沮丧。派克表示,和今天的C++或C一样,Go是一种系统语言。他解释道,"使用它可以进行快速开发,同时它还是一个真正的编译语言,我们之所以现在将其开源,原因是我们认为它已经非常有用和强大。"
- 计算机硬件技术更新频繁,性能提高很快。目前主流的编程语言发展明显落后于硬件,不能合理利用多核多CPU的优势提升软件系统性能。
- 软件系统复杂度越来越高,维护成本越来越高,目前缺乏一个足够简洁高效的编程语言。
- 企业运行维护很多c/c++的项目,c/c++程序运行速度虽然很快,但是编译速度确很慢,同时还存在内存泄漏的一系列的困扰需要解决。
3.应用领域:

4.用go语言的公司:
①、Google 这个不用多做介绍,作为开发Go语言的公司,当仁不让。Google基于Go有很多优秀的项目,比如:https://github.com/kubernetes/kubernetes ,大家也可以在Github上 https://github.com/google/ 查看更多Google的Go开源项目。
②、FacebookFacebook也在用,为此他们还专门在Github上建立了一个开源组织facebookgo,大家可以通过https://github.com/facebookgo访问查看facebook开源的项目,比如著名的是平滑升级的grace。
③、腾讯 腾讯作为国内的大公司,还是敢于尝试的,尤其是Docker容器化这一块,他们在15年已经做了docker万台规模的实践,具体可以参考http://www.infoq.com/cn/articles/tencent-millions-scale-docker-application-practice 。 主要职责是: 负责腾讯游戏蓝鲸平台后台开发工作 负责容器相关的开发工作 和蓝鲸平台,容器开发有关。腾讯作为主要使用C/C++的公司,使用Go会方便很多,也有很多优势,不过日积月累的C/C++代码很难改造,也不敢动,所以新业务会在Go方面尝试。
④、百度 目前所知的百度的使用是在运维这边,是百度运维的一个BFE项目,负责前端流量的接入。他们的负责人在2016年有分享,大家可以看下这个http://www.infoq.com/cn/presentations/application-of-golang-in-baidu-frontend 其次就是百度的消息系统,从其最近的Golang招聘介绍就可以看出来. 负责公司手百消息通讯系统服务器端开发及维护
⑤、京东 京东云消息推送系统、云存储,以及京东商城等都有使用Go做开发。
⑥、小米 小米对Golang的支持,莫过于运维监控系统的开源,也就是 http://open-falcon.com/ 。 此外,小米互娱、小米商城、小米视频、小米生态链等团队都在使用Golang。
⑦、360 360对Golang的使用也不少,一个是开源的日志搜索系统Poseidon,托管在Github上,https://github.com/Qihoo360/poseidon 还有360的推送团队也在使用,他们还写了篇博文在Golang的官方博客上 https://blog.golang.org/qihoo。 360直播在招聘Golang开发工程师。 美团、滴滴、新浪、阿里、京东以及七牛等。一般的选择,都是选择用于自己公司合适的产品系统来做,比如消息推送的、监控的、容器的等,Golang特别适合做网络并发的服务,这是他的强项,所以也是被优先用于这些项目。
5.前景:

开发工具
1.常用工具
visual studio code, Microsoft产品(简称VSCode):一个运行于Mac Os、Windows和Linux 之上的,默认提供Go语言的语法高亮,安装Go语言插件,还可以支持智能提示,编译运行等功能。Sublime Text,可以免费使用,默认也支持Go代码语法高亮,只是保存次数达到一定数量之后就会提示是否购买,点击取消继续用,和正式注册版本没有任何区别Vim: Vim是从vi发展出来的一个文本编辑器,代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用Emacs: Emacs传说中的神器,她不仅仅是一个编辑器,因为功能强大,可称它为集成开发环境Eclipse IDE工具,开源免费,并提供GoEclipse插件LitelDE,LitelDE是一款专门为Go语言开发的跨平台轻量级集成开发环境(IDE),是中国人开发的。- JetBrains公司的产品:
PhpStrom、WebStrom和PyCharm等IDE工具,都需要安装Go插件。
2.VSCode的安装:
下载vscode安装软件 https://code.visualstudio.com/download
3.安装过程:







4.使用VSCode:
(1)双击打开 (2)在盘符建立一个文件夹:gocode (3)在VSCode中打开文件夹:

(4)创建go文件:

(5)开始编写代码:

(6)注意保存代码: ctrl+s
搭建Go开发环境
1.安装和配置SDK
基本介绍:
SDK的全称(Software Development Kit 软件开发工具包)SDK是提供给开发人员使用的,其中包含了对应开发语言的工具包。
【2】SDK下载
- Go语言的官网为: golang.org ,无法访问,需要翻墙。
- SDK下载地址 : Golang中文社区:https://studygolang.com/dl
【3】安装SDK: 请注意:安装路径不要有中文或者特殊符号如空格等 SDK安装目录建议:一般我安装在d:/golang_sdk安装时 , 基本上是傻瓜式安装,解压就可以使用
① 解压zip:


go整个目录就是sdk
② go目录下:

DOS命令
1.DOS操作系统
--Microsoft公司推出的操作系统。(在windows之前的操作系统) --DOS是英文"Disk Operating System"的缩写,其中文含意是"磁盘操作系统". --DOS是单用户、单任务的操作系统.(只能执行一个任务)

2.DOS命令
--在windows中,我们通过鼠标菜单等来操作系统,而在dos操作系统中,要通过dos命令来操作系统。 --是DOS操作系统的命令,是一种面向磁盘的操作命令, --不区分大小写。
3.命令学习:
windows给我们保留了类似dos系统的操作界面,可以直接操作磁盘! dos 也是一种操作系统,是在windows出现以前用的,后来windows出来后基本没人用了,但是当windows崩溃的时候,还是要的dos方式解决,它是一种纯命令方式,cmd其实就是在windows状态下进入dos方式。
控制命令台:win+r--->cmd

4.具体dos命令:
① 切换盘符: c: d: e: 大小写没有区分
② 显示详细信息:dir

③ 改变当前目录:cd

④ . 当前目录 .. 代表上一层目录


⑤ 清屏:cls
⑥ 切换历史命令:上下箭头
⑦ 补全命令: tab按键
⑧ 创建目录:md
删除目录:rd

⑨ 复制文件命令:copy

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

第一个程序
1.go基本目录结构:

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

3.创建go源文件:

4.开始写代码: 第一个HelloWorld :

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

6.执行操作:

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

Go执行流程
1.执行流程分析:

2.上述两种执行流程的方式区别 ① 在编译时,编译器会将程序运行依赖的库文件包含在可执行文件中,所以,可执行文件 变大了很多。

② 如果我们先编译生成了可执行女件,那么我们可以将该可执行文件拷贝到没有go开发环境的机器上,仍然可以运行
③ 如果我们是直接go run go源代码,那么如果要在另外一个机器上这么运行,也需要go开发环境,否则无法执行。
④ go run运行时间明显要比第一种方式 长一点点
3.编译注意事项:
编译后的文件可以另外指定名字:

代码风格
1.注意缩进:
向后缩进:tab
向前取消缩进:shift+tab
通过命令完成格式化操作:

2.成对编程: { } ( ) “ ” ‘ ’
3.运算符两边加空白:

4.注释:官方推荐行注释 //
5.以下代码是错误的:

原因:go的设计者想要开发者有统一的代码风格,一个问题尽量只有一个解决方案是最好的
6.行长约定:
一行最长不超过80个字符,超过的请使用换行展示,尽量保持格式优雅

API

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

函数对应的源码查看:

也可以使用离线API:
