golang中文官方:https://golang.google.cn/
- 官网中documentation和package需要重点关注
1,go和区块链基础
1.1 区块链去中心化
“去中心化”解决了“信息公正”的问题,彻底解决人与人之间的信任问题。
1.2 什么是区块
从最简单的角度来说,比如建房子,它的基本单元结构就是砖块;组成区块链的基本单元结构称为区块。每个区块包含两部分:区块,记录当前块的元信息;还有一个记录实际数据的区块体。
1.3 智能合约
智能合约解决了传统合约中信任问题,大幅降低了信任成本
1.4 go语言的特性
- 执行效率高
- 擅长网络编程
- 高并发
- 跨平台
1.5 Go语言目前主要涉及的领域有:
- 区块链开发
- 高并发服务器开发
- 分布式开发
- 微服务开发
- Web框架及应用开发。
2,go语言介绍和环境安装
2.1 go语言是什么
- “Go是一种开源的程序设计语言,它意在使得人们能够方便地构建简单、可靠、高效率的软件”(来自go官网golang.org)
2.2 go语言优势
- 运行速度快,简单易学
- 适合区块链开发
- 跨平台
- 丰富的标准库(指令),Go目前已经内置了大量的库,特别是网络库非常强大(开发飞秋软件)
- Go里面也可以直接包含C代码,利用现有的丰富的C库
- 语言层面支持并发,这个就是Go最大的特色,天生的支持并发。所谓并发,所有正在运行的程序轮流使用CPU,每个程序允许占用CPU的时间非常短(比如10毫秒),这样用户根本感觉不出来CPU是在轮流为多个程序服务,就好象所有的程序都在不间断地运行一样。并发好处就是可以运行多个程序,并不卡顿。
2.3 go语言能干什么
- 网络编程,这一块目前应用最广,例如网站开发。
- 服务器编程,例如:处理日志,处理文件。(在网站开发的过程中都会涉及到)
- 区块链开发
2.4 环境安装
2.4.1 window下Go语言环境的安装
- Go安装包下载网址:https://www.golangtc.com/download
- 有zip压缩版和msi安装版两个按本下载。(这里使用msi安装版,比较方便)。
- 运行msi安装文件,千万不要在安装路径中出现中文,一路Next。(关于安装路径在这里重点强调,安装的位置以及不能出现中文名称)
2.4.2 使用goLand开发工具
2.5 第一个go程序
2.5.1 个人使用GOLand来开发第一个go程序
window go1.15 msi版本下载地址:https://golang.google.cn/dl/go1.15.windows-amd64.msi
goland下载地址:https://www.jetbrains.com/go/download/download-thanks.html?platform=windows
2.5.1 新建一个project,开始输入代码
package main
import "fmt"
func main() {
fmt.Print("hello word")
}
-
第一行:每个Go源代码文件的开头都是一个package声明,表示该Go代码所属的包。 GO语言中是通过包来对代码进行管理的。那么什么是包呢?我通过一个例子来解释一下包的概念。例如:有一家公司叫“京东“”,该公司有一个项目叫“京东网上商城”,该项目下面有管理“客户信息”的代码,另外一家公司叫“淘宝”,该公司也有一个项目叫“淘宝网上商城”,该项目下面也有管理的“客户信息”的代码,我开发的“客户管理软件”,既要用到“京东”的客户信息管理代码,也要用到“淘宝”的客户信息管理代码,为了能够很好的区分,我们在使用时必须写清楚,客户的信息管理代码到底是来自哪个商城,所以我可以这样写“import京东”,表示所使用的“客户信息代码”是来自“京东”的,那么“京东”就是一个标识,也就是包。所以说,包就是一个标识,标志着着你写的GO代码来自哪.这样代码管理非常清晰,使用也非常方便。 那么后面随着我们学习的深入,学习的代码也越来越多,我们给大家去讲解怎样自己创建包,来管理代码。创建包用到的就是package. 但是,不管你创建多少个包,要想让程序运行,必须包含一个main包。如果缺少该包,程序是无法运行的。
-
第三行代码:import表示导入,“fmt”是包名. 不管是使用我们自己定义的包还是GO自带都是通过import导入的,“fmt”是GO自带的包,该包 包含了怎样将信息打印在电脑屏幕上。注意包名要用""表示。
-
第五行代码:表示程序的入口,程序就是从该位置开始执行的,就像是教室的门口一样,注意该行代码是固定的写法,func 与main之间必须有空格,同时main后面必须带小括号,后面的一对大括号表示要完成的具体工作,也就是完成具体任务的代码必须写在一对大括号内。 func表示后面跟着的main是一个函数,函数必须有一对小括号。什么是函数呢?现在大家可以先理解与我们在数学中学到的函数是一样的,都是实现某个具体的功能,例如我们学习的三角函数等。Main函数实现的就是入口功能。再次强调一下,GO语言中的函数前面必须加上func这个单词,而且函数名称后面必须跟一对小括号。
- 第六行代码:就是使用了fmt包(注意具体使用的时候不需要加上双引号)中的Print函数,将要“hello go” 打印在屏幕上。这行代码要注意的是,fmt包与Print函数之间是用.(点连接的),该点是在半角输入法状态下输入,同时Print函数第一个字母P是大写的,不能写成小写,也就是说GO语言是区分大小写的,有很多同学在这里容易出错。将要输出的信息写在Print函数的括号内(注意括号也是在半角状态下输入的),并且用双引号包裹起来(双引号也是半角状态下输入的)
2.5.2 代码运行
我们第一个GO程序已经写完了,那么我们写的程序到底能否运行呢?是否有错误呢?下面我们执行我们的程序,程序的执行分为两步:
- (1) 编译 编译的操作步骤:选中hello word.go文件,右键--->run go build hello word.go
- (2) 执行结果 先编译成.exe文件,后执行输出结果如下:
GOROOT=C:\Go #gosetup
GOPATH=C:\Users\Admin\go #gosetup
C:\Go\bin\go.exe build -o C:\Users\Admin\AppData\Local\Temp\___go_build_hello_word_go.exe "C:/Users/Admin/go/src/study/hello word.go" #gosetup
C:\Users\Admin\AppData\Local\Temp\___go_build_hello_word_go.exe #gosetup
hello word
Process finished with exit code 0
2.5.3 其他注意事项
现在我们已经将我们写的第一个GO语言程序,执行成功了,但是还有以下几点内容需要在给大家强调一下:
- 强制左花括号{的放置位置,如果把左花括号{另起一行放置,这样做的结果是Go编译器报告编译错误。
- 每行代码占一行。
- 如果我们在我们已经成功的程序中,在加入一行输入,应该怎么加呢?直接输入fmt.Print("aaaaa"),然后直接执”Run”,发现并没有新的内容输出,原因是什么?应该怎么做?
- 关于换行输出的问题,前面的输出都没有换行,那么怎样进行换行输出呢?
2.6 学习资料
Go语言官网(需要fq):https://golang.org/
go中文社区:https://studygolang.com
go中文在线文档:https://studygolang.com/pkgdoc