一、GO语言了解
1.1、区块链
区块链应用领域
金融领域: 所有人的财产证明,将不只有银行说了算,你的个人价值将永远保值!
司法领域: 每个人的不良记录将永远不能被销毁,树正公民良德!
行政领域: 比如:我们每个人的纳税。但是税到底花在什么地方,花多钱并不知道,让国家税透明化,每笔交易记录去中心化,有助于彻底解决腐败。
人事领域: 市场大量存在假学历,假履历。如果国家会出来去中心化的每人的履历区块链系统,那么每人的教育经历将永远无法造假,人才市场将更加公正。
商业领域: 双11商品限时秒杀!所有的秒杀记录在区块链里,防止内部员工内定。
1.2、合约
传统的合约会受到各种维度的影响。
自动化维度 ---- 条件满足,交易未必会继续。
主客观维度 ---- 公证人的主观意识影响合约规则。
执行时间维度 ---- 整个合约执行过程繁琐,浪费时间。
违约惩罚维度 ---- 有人违约,未必会受到惩罚,难以追究责任。
智能合约解决了传统合约中的信任问题,大幅降低了信任成本。
1.3、Go语言
Go是一种开源的程序设计语言,它意在使得人们能够方便地构建简单、可靠、高效率的软件。GO语言借鉴了Python等其它编程语言简单,易学,生产效率高,同时GO语言专门针对多处理器(多核CPU,windows下的多核CPU)系统的程序进行了优化(让每核CPU都能够执行GO语言开发的程序),这样使用GO语言开发的程序运行的速度可以媲美C或C++开发程序的速度。
Go语言是一门编译型语言
1.4、Go语言优势
1、运行速度快。简单易学。
2、薪水待遇高。
3、适合区块链开发。
4、跨平台。
5、丰富的标准库(指令),Go 目前已经内置了大量的库,特别是网络库韭常强大。
6、Go里面也可以直接包含C代码,利用现有的丰富的C库。
7、语言层面支持并发,这个就是Go最大的特色,天生的支持并发。所谓并发,所有正在运行的程序轮流使用CPU,每个程序允许占用CPU的时间非常短(比如10毫秒),这样用户根本感觉不出来CPU是在轮流为多个程序服务,就好象所有的程序都在不间断地运行一样。并发好处就是可以运行多个程序,并不卡顿。中。
1.5、GO语言应用。
1、网络编程,这一块目前应用最广,例如网站开发。
2、服务器编程,例如:处理日志,处理文件。(在网站开发的过程中都会涉及到)。
3、区块链开发。
1.6、环境安装
Go官网:https://golang.google.cn/
Go语言标准库中文文档:https://studygolang.com/pkgdoc
安装成功
1.7、配置GOPATH
● GOPATH是一个环境变量,用来表明你写的go项目的存放路径(工作目录)。
● GOPATH路径最好只设置一个,所有项目代码都放到GOPATH 的src 目录下。(1.12后面就不需要配置或支持配置多个)
● 装好之后系统默认有个 GOPATH(如下),删除就好,自己配置(系统变量中配置)。
平台 GOPATH默认值 举例
Windous %USERPROFILE%/go C:\[Users]用户名\go
Unix SHOME/go /home/用户名/go
1.8、GO项目结构
1.8.1、个人开发
1.8.2、多人开发
1.8.3、企业开发
1.9、GO常用命令
1.9.1、编译
● go build + 目标文件或文件夹(项目路径),默认从SRC目录下找
● 直接在项目的目录下 执行 go build
● go build -o 编译后文件名(Win系列加后缀,默认是执行文件名)
1.9.2、编译后执行
● 直接输入完整文件名(加后缀.exe)
1.9.3、编译加执行
● go run 文件路径(加后缀)。像执行脚本一样执行GO代码。
1.9.4、go install
① 先编译得到一个可执行文件
② 将可执行文件拷贝到“GOPATH/bin”
1.9.5、跨平台编译
● Windows指定目标操作系统的平台和处理器架构即可
▶ Linux
SET CGO_ENABLED=0 //禁用CGO
SET GOOS=Linux //目标平台是Linux
SET GOARCH=amd64 //目标处理器架构是amd64
go build
▶ Mac
SET CGO ENABLED=0
SET G00S = darwin
SET GOARCH and64
go build
● Mac下编译Windows和Linux平台64位 可执行程序
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build
CGO_ENABLED=G G00S=windows GOARCH=and64 go build
● Linux下编译Windows和Mac平台64位 可执行程序
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build
CGO_ENABLED=G G00S=windows GOARCH=and64 go build