Go 语言简介

图片来源于网络

学习任何知识之前肯定要对这个知识有一个简单的了解,当然学习 Go 语言也一样,这个小节我们就来简单认识下 Go 语言,了解下 Go 语言的来龙去脉。

1. Go 语言的出身

Go(又称 golang)是 Google 开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。

罗伯特·格里泽默(Robert Griesemer),罗布·派克(Rob Pike)及肯·汤普逊(Ken Thompson)于 2007 年 9 月开始设计 Go,后来 Ian Lance Taylor、Russ Cox 加入项目。Go 是基于 Inferno 操作系统所开发的,于 2009 年 11 月正式宣布推出,成为开放源代码项目,并在 Linux 及 Mac OS X 平台上进行了实现,后来追加了 Windows 系统下的实现。在 2016 年,Go 被软件评价公司 TIOBE 选为“TIOBE 2016 年最佳语言”。目前,Go 已经开始每半年发布一个二级版本(即从 a.x 升级到 a.y)。

2. Go 语言的特点

  • Go 语言可以直接编译成主流操作系统支持的可执行文件,部署服务只需要扔一个可执行文件上去直接运行就好了;

  • Go 语言有不输于动态语言的丰富静态库。归功于强大的官方团队和社区,目前 Go 语言几乎什么都可以开发;

  • Go 语言天生支持并发,这是个近乎无敌的设定;

  • Go 语言具有自动垃圾回收机制;

  • Go 语言简单易学,因为它几乎支持常用的语言的所有特性:继承、封装等等;

  • Go 语言内嵌支持 C 语言,你甚至可以直接在 Go 语言里面写 C 语言代码;

  • Go 语言支持交叉编译,你可以在 Windows 环境中编译任何平台的 Go 可执行程序。但是需要注意的是,如果你在 Go 程序中写了 C 语言,你就不能只用交叉编译的特性了,所谓鱼和熊掌不可兼得嘛。

3. Go 语言的使用场景

  • 服务器编程;

  • 分布式系统,数据库代理器;

  • 网络编程,这一块目前应用最广,包括 Web 应用、API 应用、下载应用;

  • 内存数据库,前一段时间 Google 开发的 groupcache,couchbase 的部分组件;

  • 云平台,目前国外很多云平台在采用 Go 开发,CloudFoundy 的部分组件,前 VMare 的技术总监自己出来搞的apcera 云平台;

  • 区块链技术研发。

4. Go 语言开发的经典项目

  • Docker:基于 lxc 的一个虚拟打包工具,能够实现 PAAS 平台的组建。

  • Hyperledger fabric:市面上最流行的两大区块链平台之一。

5. 与其他开发语言对比

Go 语言为什么能在现有的成熟语言中脱颖而出呢?这要归功于它比 Java 还简洁的语法,接近 C 语言的编译执行速度,甚至还有不亚于脚本语言的开发速度。在目前最要求效率的当下,它无疑会是一匹黑马。但是和其它语言比起来劣势也很明显,因为它出现的时间短,学习资料少,第三方支持库虽然多,但是比起 Java 以及 C 语言还是远远不够。Go 语言不支持泛型,对于学习 Java 的开发人员来说一开始会很不适应。

6. 为什么要学习 Go 语言

综上所述, Go 语言出身名门,血统纯正。从学习难度上来说语法简单,功能强大。从可扩展性上来说第三方库众多,标准库强大稳定。性能上更是拥有无可挑剔的自动调度线程。Go 语言完美地协调了运行效率和开发效率之间的关系。而且 Go 语言目前已经广泛应用于虚拟容器、区块链等传统的和高精尖的产业中,将来会有巨大的前景。不管是国内还是国外,对 Go 语言的程序员的需求只会越来越多。

7. Go 语言的代码

接下来我们来看看 Go 语言怎么用代码来和你 say hello。

package main

import "fmt"

func main() {
fmt.Println("Hello Codey !")
}

上述代码的输出结果就是:Hello Codey !

8. 小结

Go 语言目前的用途主要是在服务器和区块链上。但是它的功能不止于此,需要我们多去开发多去使用,使得 Go 语言的生态更加完整,更加强大。

Go 语言在 Windows 上的安装及配置

既然要学习 Go 语言,那么肯定要在本机安装 Go 语言的开发环境,这节课我们就来学习下如何在 Windows 操作系统下安装 Go 语言的开发环境:

1. Go 语言的下载

Tips:本文以本文撰写时的 Go 语言最新版本,也就是 go.1.13.5 版本为例,操作系统为 Windows10 操作系统。

1.1 下载语言包

和大部分编程语言一样,想要使用 Go 语言,就必须安装 Go 语言的编译环境,使我们写的 Go 代码编译为计算机能"看懂"的语言。我们可以通过以下两个链接下载到 Go 语言的编译环境:

  • Golang官网

  • Golang中文网

两个网站打开的内容只有语言不同而已,网站上清晰的标注了不同操作系统需要对应安装哪个版本,其中加粗的 是该操作系统的推荐版本。我们下载 windows 需要的版本就好了,为了更容易理解整个安装过程,我们下载需要手动配置的版本。

Go 语言版本展示

1.2 解压语言包

将下载好 zip 文件解压到电脑中任意位置,解压后将得到如下 Go 环境文件夹,文件列表如下:

解压 Go 语言到任意位置

2. Go 语言的安装配置

得到完整的 Go 环境之后,需要配置 Go 的环境变量,右击此电脑->属性->高级系统设置->环境变量,打开环境变量设置窗口。

配置 Go 的环境变量

需要新建两个环境变量配置,一个是 GOROOT ,这个就是 Go 环境所在目录的配置。另一个是 GOPATH ,这个是 Go 项目的工作目录,你以后开发的代码就写在这个文件夹中。

G:\Work\ProgramLang\go

配置 GOROOT 的环境变量
G:\Work\ProgramWorkSpace\go\library;G:\Work\ProgramWorkSpace\go\workspace

配置 GOPATH 的环境变量
%GOROOT%\bin

将新建的 GOROOT 配置到 path 这个环境变量中
go version

输出版本信息即为安装成功

3. 视频演示安装过程

3. 小结

本文主要学习了 Go 语言在 Windows 操作系统中的安装和配置。其中 GOPATH 这个环境变量可以只配置一个,配置多个是一个程序员包和自己的源码分开管理的习惯。

Go 语言在 Linux 上的安装与配置

既然要学习 Go 语言,那么肯定要在本机安装 Go 语言的开发环境,上节课我们学习了如何在 Windows 操作系统上安装 Go 语言开发环境,这节课我们来学习下如何在 Linux 操作系统上安装 Go 语言开发环境:

1. Go 语言的下载

Tips:本文以本文撰写时的 Go 语言最新版本,也就是 go.1.13.5 版本为例。Linux 发行版本使用 Ubuntu18.04 为例来做演示。

1.1 下载语言包

下载 Linux 版本的 Go 语言环境压缩包,在 Linux 终端中输入下面这条命令:

wget https://dl.google.com/go/go1.13.5.linux-amd64.tar.gz

Go 语言在 Linux 下的安装过程

1.2 解压语言包

/usr/local/usr/local/go
sudo tar -C /usr/local -zxvf  go1.13.5.linux-amd64.tar.gz
解压 Go 语言的安装包

2. Go语言的安装配置

得到完整的 Go 语言环境之后,我们需要将其可执行文件路径配置到环境变量中,使其在任何一个目录均可使用。如果你是 root 账号,可以不加 sudo。

sudo vi /etc/profile

在打开的文件末尾加入环境变量配置,需要配置 GOPATH 和 GOROOT ,出于个人习惯,建议 GOPATH 配置两个,第一个用于存储 Go 语言的第三方包,第二个用于存储自己开发的代码。

export GOROOT=/usr/local/go
export PATH="$PATH:$GOROOT/bin"
export GOPATH=$HOME/go/lib:$HOME/go/work

环境变量配置完毕后使用 source 指令来使环境变量生效。

source /etc/profile

最后验证安装成功,输出正确的版本号。

go version

输出版本信息则说明安装成功

3. 视频演示安装过程

4. 小结

本文主要学习了 Go 语言在 Ubuntu 操作系统中的安装和配置。其中 GOPATH 这个环境变量可以只配置一个,配置多个是一个程序员包和自己的源码分开管理的习惯。

Go 语言在 MacOS 上的安装及配置

既然要学习 Go 语言,那么肯定要在本机安装 Go 语言的开发环境,这节课我们就来学习下如何在 Windows 操作系统下安装 Go 语言的开发环境:

1. Go 语言的下载

注:本文以本文撰写时的 Go 语言最新版本,也就是 go.1.13.8 版本为例*。*

1.1 Go语言的下载

下载 MacOS 版本的 Go 语言环境压缩包:

curl -O /dl/golang/go1.13.8.darwin-amd64.tar.gz

1.2 解压Go文件

解压文件:

sudo tar -C /usr/local -zxvf  go1.13.8.darwin-amd64.tar.gz

2.Go语言的安装配置

得到完整的 Go 语言环境之后,我们需要将其可执行文件路径配置到环境变量中,使其在任何一个目录均可使用。如果你是管理员账号,可以不加 sudo :

sudo vi /etc/profile

在打开的文件末尾加入环境变量配置,需要配置 GOPATH 和 GOROOT ,处于个人习惯,建议 GOPATH 配置两个,第一个用于存储 Go 语言的第三方包,第二个用于存储自己开发的代码:

export GOROOT=/usr/local/go
export PATH="$PATH:$GOROOT/bin"
export GOPATH=$HOME/go/lib:$HOME/go/work

完毕后使用 source 指令来使环境变量生效:

source /etc/profile
go version
go version go1.13.8 darwin/amd64

3.小结

本文主要学习了 Go 语言在 MacOS 操作系统中的安装和配置。其中 GOPATH 这个环境变量可以只配置一个,配置多个是一个程序员包和自己的源码分开管理的习惯。

Git 的下载和安装

因为 Go 语言是一门开源的语言,所以它的源代码以及很多的官方库,都是发布在 github 上的。安装了 Git 了之后,再配合 Go 语言的开发工具和命令,可以使开发事半功倍,其中代码的自动导包,智能提示,都是依赖 Go 语言的开发插件,这些插件的更新和下载主要都依赖于 Git,所以如果想要舒舒服服的学习 Go 语言的话 Git 是必不可少的,那么本文将主要介绍 Git 的下载和安装:

1. windows 下安装

1.1 Git 的下载

要下载 Git 的话直接打开 Git 的官网 下载最新的安装包即可:

Git 官网首页,点击 download 下载

1.2 Git 的安装

git version

验证 Git 是否安装成功

如果出现下图类似的提示,可能是在安装的时候环境变量自动配置失败,这时候就需要我们自己手动配置一下环境变量:

安装 Git 可能会出现的错误
C:\Program Files\Git\cmd

将 Git 配置到环境变量中
git version

重新输入 git version 命令打印版本信息

3. 视频演示安装过程

3. 小结

本文主要学习了 Go 语言在 Windows 操作系统中的安装和配置。其中 GOPATH 这个环境变量可以只配置一个,配置多个是一个程序员包和自己的源码分开管理的习惯。

2. Linux 下安装 Git

Linux 下安装 Git 非常的简单,只需要一条命令即可:

sudo apt-get install git -y

代码块

  • 1

Linux 操作系统下 Git 的安装过程

安装成功后使用 git version 来验证安装结果,输出版本号则安装成功。

成功输出版本信息则说明安装成功

视频演示安装过程:

3. 小结

本文主要学习了 Git 这个软件的安装,以及在 Windows 操作系统中可能会出现的常见问题的解决。注意下环境变量的问题,这个问题在 Windows 上安装各种环境和依赖的时候都有可能会出现。

VSCode 编辑器安装和配置

工欲善其事,必先利其器。想要学好 Go 语言,肯定要有一个趁手的开发工具,Go 语言的开发工具有很多种,本文会给大家介绍一种使用面积最广泛、免费且开源的 Go 语言开发工具—— VSCode。

1. VSCode的简介

VSCode (Visual Studio Code)是微软在 2015 年 4 月 30 日 Build 开发者大会上发布的一款开源、免费而且可以跨平台使用的代码编辑器,其具有使用简单、插件丰富以及功能强大等优点。一经推出就受到很多开发者的追捧,其对于 Go 语言的支持也是非常的优秀,故而在 Go 语言基础中推荐介绍这个代码编辑器。

2. VSCode的下载和安装

直接从官网下载合适的安装包即可。官网地址:/

VSCode 官网首页,点击左侧的 Download 进行下载

安装包下载完成之后直接双击安装包,VSCode 的安装是傻瓜式的安装,一直点击下一步即可。

3. VSCode的中文配置

Ctrl+Shift+P

打开命令快捷键

选择 Configure Display Language:

选择 Configure Display Language

如果只有一个英文的选项的话,我们选择下面的 install additional language… 来下载新的语言包:

选择 install additional language...

选择第一个简体中文,点击右下角的 install ,安装成功之后会要求你重新启动 VSCode ,点击 Yes ,会自动重启 VSCode。

安装中文包之后重启 VSCode

再次出现后的 VSCode 就是中文的了:

中文的 VSCode 界面

4. VSCode 配置 Go 语言开发环境

安装结束之后就需要配置 Go 语言的开发环境了。因为 Go 语言的插件很多链接无法直接访问,所以我们需要手动链接,可以打开任意的 go 文件,这样 VSCode 会自动帮你安装 Go 的插件。

golang.org\x%GOPATH%\src\``golang.org\x
git clone https://github.com/golang/tools.git

然后使用下列命令来安装 Go 语言的插件:

go get github.com/ramya-rao-a/go-outline  
go get github.com/acroca/go-symbols
go get golang.org/x/tools/cmd/guru
go get golang.org/x/tools/cmd/gorename
go get github.com/josharian/impl
go get github.com/rogpeppe/godef
go get github.com/sqs/goreturns
go get github.com/golang/lint/golint
go get github.com/cweill/gotests/gotests
%GOAPTH%/bin

将 bin 目录添加到环境变量中

最后一步就是在 VSCode 中安装 Go 语言的高亮插件,在插件库搜索 go,第一个就是,直接点击安装即可:

安装 Go 语言的代码高亮插件

5. Go 语言的 HelloWorld

%GOPATH%/src

在 src 文件夹下新建一个任意名称的文件夹,并在这个文件夹下新建一个文件 helloworld.go,并使用 VSCode 打开这个文件夹。在 helloworld.go 文件中键入代码:

package main  

import "fmt"

func main() {
fmt.Println("Hello World!")
}

代码块

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

我们来对这一段简单的 Go 语言代码逐行来解释下:

  • 第 1 行:这一行是包名,Go 语言中每一个文件开头都是包名,只有 main 函数的包名字可以叫 main;

  • 第 3 行:这一行的作用是导入包,是将在这个 Go 文件中使用到的 Go 语言官方库,或者第三方库导入进来;

  • 第 5 行:主函数声明,main 函数是每一个 Go 程序的入口;

  • 第 6 行:输出语句。将 “Hello World !” 输出到控制台。

右击这个文件,选中在终端中打开。

打开终端
helloworld.go
go run helloworld.go

代码块

  • 1

得到执行结果,可以看到,在终端中已经输出了 Hello World!

可以看到 Hello World 输出成功。

6. 小结

本文主要学习了在 VSCode 上搭建一个 Go 语言的开发环境。其中需要注意的主要就是无法下载到 Go 语言插件的解决方案,使用 github上官方的开源库,手动进行修改路径和安装即可。

Go 语言的变量声明

从这节课开始我们就要正式开始学习 Go 语言的语法了,本文主要介绍了 Go 语言在代码中声明变量的几种方式,在 Go 语言中变量声明形式主要分为两种:

  • 单变量声明

  • 多变量声明

下面我们一一来看下这两种声明形式:

1. 单变量声明

varvar 变量名 变量类型
package main

import "fmt"

func main() {
var helloWorld string
helloWorld = "Hello World!"
fmt.Println(helloWorld)
}
  • 第 6 行:声明一个叫 helloWorld 的 string 类型变量,数据类型表明这个变量内会存储什么类型的数据;

  • 第 7 行:给 helloWorld 这个变量赋值为"Hello World!";

  • 第 8 行:输出 helloWorld 变量的值。

Tips:关于变量的数据类型我们会在后面的小节进行讲解。

上面代码运行后输出结果:

可以看到 “Hello World!”已经输出到控制台中了。

2. 多变量声明

varvar 变量名1,变量名2 变量类型,
package main

import "fmt"

func main() {
var hello, world string
hello = "Hello"
world = "World!"
fmt.Println(hello, world)
}
  • 第 6 行:声明两个分别叫 hello 和 world 的 string 类型变量;

  • 第 7 行:给 hello 和 world 变量分别赋值为 “Hello” 和 “World!”;

  • 第 8 行:输出 hello 和 world 变量的值。

输出结果:

可以看到 “Hello World!”已经输出到控制台中了。

3. 小结

var