go语言基础介绍

Let’s Go!

1.1 GO语言介绍

1.1.1 Go语言是什么?

2009年11月10日,Go语言正式成为开源编程语言家庭的一员。

Go语言(或称Golang)是云计算时代的C语言。Go语言的诞生是为了让程序员有更高的生产效率,Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。

开发人员在为项目选择语言时,不得不在快速开发和性能之间做出选择。C和C++这类语言提供了很快的执行速

度,而 Ruby 和 Python 这类语言则擅长快速开发。Go语言在这两者间架起了桥梁,不仅提供了高性能的语言,同时也让开发更快速。

从左到右分别是 罗伯特·格瑞史莫(Robert Griesemer),罗勃·派克(Rob Pike)及肯·汤普逊(Ken Thompson)

1.1.2 Go语言有什么优势?

上手难度低(学习曲线) 快(效率)

出身名门(谷歌出品,必属精品)

组合(自由高效:组合的思想、无侵入式的接口) 工具箱(强大的标准库)

技能施放(部署方便) 天生神力(天然并发)

1.1.3 Go适合用来做什么?

服务器编程,以前你如果使用C或者C++做的那些事情,用Go来做很合适,例如处理日志、数据打包、虚拟机处理、文件系统等。

分布式系统,数据库代理器等。

这一点,在那些用Golang打造的工具和软件中显而易见。Docker,作为一种微服务的容器,也是用 Golang

打造。

网络编程,这一块目前应用最广,包括Web应用、API应用、下载应用。内存数据库,如google开发的groupcache,couchbase的部分组建。

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

apcera云平台。

区块链,区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用。(区块链的  服务器云存储那部分就是使用go开发的)

PS:哪些公司在使用GO语言?

国外的如

Google Docker Facebook

国内的如

腾讯百度

阿里云CDN 京东

小米

360

现在很多公司都开始尝试Golang,除了上面提到的,还有美团、滴滴、新浪以及七牛等。一般的选择,都是选择用于自己公司合适的产品系统来做,比如消息推送的、监控的、容器的等,Golang特别适合做网络并发的服务, 这是他的强项,所以也是被优先用于这些项目。

 

扩展延伸:区块链

百度百科

区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。

区块链(Blockchain)是比特币的一个重要概念,它本质上是一个去中心化的数据库,同时作为比特币的底层技 术,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一次比特币网络交易的信息,用于验证其   信息的有效性(防伪)和生成下一个区块。

1.2 环境搭建

1.2.1 语言环境

1、下载程序安装包:

Go安装包下载网址:https://www.golangtc.com/download

有zip压缩版和msi安装版两个版本下载。(这里使用msi安装版,比较方便)。

2、安装及环境配置

运行msi安装文件,千万不要在安装路径中出现中文,一路Next。

安装过程简单,一路“next”即可,也可以定义 安装目录

由于使用msi安装文件,所以Go语言的环境变量已经自动设置好了。打开Windows中的命令提示符(cmd.exe)执行命令:

查看GO版本

打印 Go 语言的环境信息,出现如图所示信息,则安装成功

我们需要做的是设置工作空间gopath目录(Go语言开发的项目路径)

Windows 设置如下,新建一个环境变量名称叫做GOPATH,值为你的工作目录,例如GOPATH=D:\Workspace 以上%GOPATH% 目录约定有三个子目录:

src 存放源代码(比如:.go .c .h .s等)

pkg 编译后生成的文件(比如:.a)

bin 编译后生成的可执行文件(为了方便,可以把此目录加入到  windows的PATH  变量中,在环境变量path后追加%GOPATH%\bin)

bin和pkg目录可以不创建,go命令会自动创建(如 go install),只需要创建src目录即可。

1.2.2 Go语言环境测试

新建一个hello.go文件,其内容如下:

 

package main

import “fmt”

func main(){

fmt.Println(“hello world!!!”)

}

 

编译并直接运行其程序:

1.2.3 LiteIDE安装(编程工具)

LiteIDE 是一款简单,开源,跨平台的 Go IDE。官网:http://liteide.org/cn/

发行版下载地址:https://sourceforge.net/projects/liteide/files

在官网下载合适版本:

windows版本,解压后即可使用:

下载压缩包并解压至c:\盘即可,安装完成之后,打开应用程序,“工具”–>”编辑当前环境”,确认GOROOT变量与GO     安装路径一致:

“工具”–>”管理GOPATH”

新建个小项目

运行结果

用快捷键“ctrl+r”

1.2.3 Goland安装

  1. 官网下载地址:https://www.jetbrains.com/go/

2.选择电脑系统对应的版本

  1. 打开安装
  1. 点击“next”按钮,选择要安装的路径,然后点击“next”,会出现安装选项。根据你自己电脑的型号,选择合适的        版本后点击“next”按钮。
  1. 点击安装
  1. 点击完成
  1. 打开Goland激活输入激活码

 

K03CHKJCFT-

eyJsaWNlbnNlSWQiOiJLMDNDSEtKQ0ZUIiwibGljZW5zZWVOYW1lIjoibnNzIDEwMDEiLCJhc3NpZ25lZU5hbWUiOiIiLCJh c3NpZ25lZUVtYWlsIjoiIiwibGljZW5zZVJlc3RyaWN0aW9uIjoiRm9yIGVkdWNhdGlvbmFsIHVzZSBvbmx5IiwiY2hlY2tD b25jdXJyZW50VXNlIjpmYWxzZSwicHJvZHVjdHMiOlt7ImNvZGUiOiJJSSIsInBhaWRVcFRvIjoiMjAxOS0wNC0yNSJ9LHsi Y29kZSI6IlJTMCIsInBhaWRVcFRvIjoiMjAxOS0wNC0yNSJ9LHsiY29kZSI6IldTIiwicGFpZFVwVG8iOiIyMDE5LTA0LTI1 In0seyJjb2RlIjoiUkQiLCJwYWlkVXBUbyI6IjIwMTktMDQtMjUifSx7ImNvZGUiOiJSQyIsInBhaWRVcFRvIjoiMjAxOS0w NC0yNSJ9LHsiY29kZSI6IkRDIiwicGFpZFVwVG8iOiIyMDE5LTA0LTI1In0seyJjb2RlIjoiREIiLCJwYWlkVXBUbyI6IjIw MTktMDQtMjUifSx7ImNvZGUiOiJSTSIsInBhaWRVcFRvIjoiMjAxOS0wNC0yNSJ9LHsiY29kZSI6IkRNIiwicGFpZFVwVG8i OiIyMDE5LTA0LTI1In0seyJjb2RlIjoiQUMiLCJwYWlkVXBUbyI6IjIwMTktMDQtMjUifSx7ImNvZGUiOiJEUE4iLCJwYWlk VXBUbyI6IjIwMTktMDQtMjUifSx7ImNvZGUiOiJHTyIsInBhaWRVcFRvIjoiMjAxOS0wNC0yNSJ9LHsiY29kZSI6IlBTIiwi cGFpZFVwVG8iOiIyMDE5LTA0LTI1In0seyJjb2RlIjoiQ0wiLCJwYWlkVXBUbyI6IjIwMTktMDQtMjUifSx7ImNvZGUiOiJQ QyIsInBhaWRVcFRvIjoiMjAxOS0wNC0yNSJ9LHsiY29kZSI6IlJTVSIsInBhaWRVcFRvIjoiMjAxOS0wNC0yNSJ9XSwiaGFz aCI6Ijg4MjUwMTQvMCIsImdyYWNlUGVyaW9kRGF5cyI6MCwiYXV0b1Byb2xvbmdhdGVkIjpmYWxzZSwiaXNBdXRvUHJvbG9uZ2F0ZWQiOmZhbHNlfQ==-

IJBDUuZMqhMJZfuM8Pgz1WXDRP3k9sKMJXuGdnbwoYDN4Y2G5Xmpw05GZUeESnh2/wzVxTHF4+PQ5ewk+J66F15b50VHSNxF I9XKWatoDfBc9EA1CddWqAU5CaipdMkSHoUDbT69PPGU4Vsfo1HTFv50tQ7RFVYMDbmVhw6mUbTFMvGiu5CZTuEVkmJ+1Kpf uyQZvXjS1hXhfbK/xmpMG2/xRmK9lxW9PafZU1dWxqjYU8QBlUYgjdDsDS2apSTE+xFF6y3ZKK/YThpC7IYt5HR5Cc3VGjdb

/H7jEAkH2/Uz0PrixPc3Bk5tU01rhxI4Z5VbmmWzGAhWWBtQEqU17A==-MIIEPjCCAiagAwIBAgIBBTANBgkqhkiG9w0BAQsFADAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBMB4XDTE1MTEwMjA4MjE0 OFoXDTE4MTEwMTA4MjE0OFowETEPMA0GA1UEAwwGcHJvZDN5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxcQk

q+zdxlR2mmRYBPzGbUNdMN6OaXiXzxIWtMEkrJMO/5oUfQJbLLuMSMK0QHFmaI37WShyxZcfRCidwXjot4zmNBKnlyHodDij

/78TmVqFl8nOeD5+07B8VEaIu7c3E1N+e1doC6wht4I4+IEmtsPAdoaj5WCQVQbrI8KeT8M9VcBIWX7fD0fhexfg3ZRt0xqw McXGNp3DdJHiO0rCdU+Itv7EmtnSVq9jBG1usMSFvMowR25mju2JcPFp1+I4ZI+FqgR8gyG8oiNDyNEoAbsR3lOpI7grUYSv kB/xVy/VoklPCK2h0f0GJxFjnye8NT1PAywoyl7RmiAVRE/EKwIDAQABo4GZMIGWMAkGA1UdEwQCMAAwHQYDVR0OBBYEFGEp G9oZGcfLMGNBkY7SgHiMGgTcMEgGA1UdIwRBMD+AFKOetkhnQhI2Qb1t4Lm0oFKLl/GzoRykGjAYMRYwFAYDVQQDDA1KZXRQ cm9maWxlIENBggkA0myxg7KDeeEwEwYDVR0lBAwwCgYIKwYBBQUHAwEwCwYDVR0PBAQDAgWgMA0GCSqGSIb3DQEBCwUAA4IC AQC9WZuYgQedSuOc5TOUSrRigMw4/+wuC5EtZBfvdl4HT/8vzMW/oUlIP4YCvA0XKyBaCJ2iX+ZCDKoPfiYXiaSiH+HxAPV6 J79vvouxKrWg2XV6ShFtPLP+0gPdGq3x9R3+kJbmAm8w+FOdlWqAfJrLvpzMGNeDU14YGXiZ9bVzmIQbwrBA+c/F4tlK/DV0 7dsNExihqFoibnqDiVNTGombaU2dDup2gwKdL81ua8EIcGNExHe82kjF4zwfadHk3bQVvbfdAwxcDy4xBjs3L4raPLU3yenS zr/OEur1+jfOxnQSmEcMXKXgrAQ9U55gwjcOFKrgOxEdek/Sk1VfOjvS+nuM4eyEruFMfaZHzoQiuw4IqgGc45ohFH0UUyjY cuFxxDSU9lMCv8qdHKm+wnPRb0l9l5vXsCBDuhAGYD6ss+Ga+aDY6f/qXZuUCEUOH3QUNbbCUlviSz6+GiRnt1kA9N2Qachl

+2yBfaqUqr8h7Z2gsx5LcIf5kYNsqJ0GavXTVyWh7PYiKX4bs354ZQLUwwa/cG++2+wNWP+HtBhVxMRNTdVhSm38AknZlD+P TAsWGu9GyLmhti2EnVwGybSD2Dxmhxk3IPCkhKAK+pl0eWYGZWG3tJ9mZ7SowcXLWDFAk0lRJnKGFMTggrWjV8GYpw5bq23V mIqqDLgkNzuoog==

下载完了goland之后我们写一个hello的程序。然后需要注意的是println的用法

PS:标准命令概述

Go语言中包含了大量用于处理Go语言代码的命令和工具。其中,go命令就是最常用的一个,它有许多子命令。这些子命令都拥有不同的功能,如下所示。

build:用于编译给定的代码包或Go语言源码文件及其依赖包。

clean:用于清除执行其他go命令后遗留的目录和文件。

doc:用于执行godoc命令以打印指定代码包。

env:用于打印Go语言环境信息。

fix:用于执行go tool fix命令以修正给定代码包的源码文件中包含的过时语法和代码调用。fmt:用于执行gofmt命令以格式化给定代码包中的源码文件。

get:用于下载和安装给定代码包及其依赖包(提前安装git或hg)。

list:用于显示给定代码包的信息。

run:用于编译并运行给定的命令源码文件。install:编译包文件并编译整个程序。 test:用于测试给定的代码包。

tool:用于运行Go语言的特殊工具。

version:用于显示当前安装的Go语言的版本信息。

学习资料

Go语言官网(需要翻墙):https://golang.org/ go中文社区:https://studygolang.com

go中文在线文档:https://studygolang.com/pkgdoc

1.3 介绍几种IDE(集成开发环境)

LiteIDE

LiteIDE是一款专门为Go语言开发的跨平台轻量级集成开发环境(IDE),由QT编写。

由于它是为Golang直接设计的,LiteIDE为开发人员提供了许多有用的功能,包括可配置的构建命令,高级代码编辑器和广泛的Golang支持。其他功能包括代码管理,gdb和Delve调试器,自动完成和使用WordApi的主题,基于MIME类型的系统等等。

Goland

JetBrains公司出品,Goland就是专门针对Go语言而打造的一款编程工具, 未付费版本只能试用30天

VS Code

它是微软开发的广受欢迎的开源IDE,有一个开箱即用的Go扩展可供VS   Code使用。vscode-go插件为开发人员提供了更多功能,包括与许多Go工具集成。

VS  Code通过IntelliSense,内置Git集成,直接从编辑器调试代码等功能提供智能完成功能。VS  Code具有高度可 扩展性,并通过其许多扩展提供了许多自定义选项。它还提供了几十种语言的支持,这使得它成为了受开发者欢迎   的工具。

Sublime text

这个文本编辑器在开发者中较为普及,应该说sublime并非一个完全成熟的IDE,但是它具备很多语言的扩展插件, 比如python、lua等,其中有一个插件GoSublime专门针对go语言,GoSublime提供了语法高亮、自动补全等功       能,这些功能使得Sublime Text成为一很实用的Go IDE。

Eclipse

GoClipse是Eclipse的插件。使用GoClipse插件,开发人员可以利用流行的Eclipse IDE进行编程。Eclipse IDE和GoClipse插件都是免费和开源的。GoClipse编辑器为开发人员提供了广泛的功能,包括源代码编辑器,项目向导和         构建器,以帮助报告编辑器内构建的错误,以及功能齐全的GDB调试器支持。

Vim

Vim有许多插件可以帮助开发人员更轻松地编辑他们的Go代码。vim-go插件自动安装所有必要的东西,为Vim中的Go开发人员提供更平滑的集成。

Vim-go具有许多有用的功能,包括编译器,改进的语法高亮和折叠,完成支持以及一系列具有集成支持的调试程序。还有一些使用的高级源分析工具,包括:GoImplements,:GoCallees和:GoReferrers。

其他vim插件包括用于反馈编译器错误的Syntastic插件,用于Gotags的tagbar插件,用于语法检查的vim编译  器插件,甚至用于生成.virmrc配置的vim-bootstrap。

 

1.4 第一个Go程序

1.4.1 Hello Go

// hello.go package main

import “fmt”

func main() {

fmt.Println(“Hello Go!”)

}

1.4.2 代码分析

每个Go源代码文件的开头都是一个package声明,表示该Go代码所属的包。包是Go语言里最基本的分发单位,也是工程管理中依赖关系的体现。

Go语言中我们是通过一个包来对语言进行管理的。

要生成Go可执行程序,必须建立一个名字为main的包,并且在该包中包含一个叫main()的函数(该函数是Go可执行程序的执行起点)。

Go语言的main()函数不能带参数,也不能定义返回值。

在包声明之后,是一系列的import语句,用于导入该程序所依赖的包。由于本示例程序用到了Println()函数,所以需要导入该函数所属的fmt包。import是一个输出输入的依赖包。而且包名一定要用双引号

所有Go函数以关键字func开头。一个常规的函数定义包含以下部分:

func函数名(参数列表)(返回值列表) {。

// 函数体

}

Go程序的代码注释与C++保持一致,即同时支持以下两种用法:

func是将定义的函数名中的内容进行执行 我们可以称为主函数也可以称为入口函数:因为我们的程序运行都是从func这里开始定义的这个是程序的一个主入口,这是一个程序的入口函数

 

Go中的定义函数

Func:(关键字这个关键字不能修改)在func后面跟的是一个函数名,

Main函数名:当然只能有一个主函数,所以主函数的名字就不能在重复了。函数名后面跟一个小括号。

():这个小括号是用来写参数列表的,

{}:小括号后面是一个花括号花括号中间这一部分我们称为函数体。

参数列表:然后再小括号和花括号中间这一部分我们可以定义返回值。但是主函数和普通函数是有区别的,这个区别点就是。每个程序要想执行必须要有一个主函数。主函数是没有参数列表和返回值的。但是其他普通函数可以,花括号必须和函数名在一行内

在go里面我们

/* 块注释 */ 块注释可以注释多行,将多个需要注释的内容放到一起就可以将多行信息一起注释

// 行注释

Go程序并不要求开发者在每个语句后面加上分号表示语句结束,这是与C和C++的一个明显不同之处。

注意:强制左花括号{的放置位置,如果把左花括号{另起一行放置,这样做的结果是Go编译器报告编译错误。

 

1.4.3 命令行运行程序

写程序时的注意事项:

再同一个文件里面不能写一样的函数名,不然会产生函数名冲突的问题。因为这样go程序再执行的时候不知道去调用那个函数,而且写同样的函数名他的下面会出现红色波浪符

点赞