区块链应用
区块链技术,简称BT(blookchain technology),也被称为分布式账本技术,是一种互联网数据库技术,其特点是去中心化、公开透明,让每个人均可参与数据库记录
后端服务器应用
比如美团APP的后台流量支撑程序(排序,推荐,搜索等),提供负载均衡,cache,容错,按条件分流,统计运行指标等功能
云计算/云服务后台应用
CDN(内容分发网络),比如访问一个网站里面有很多的图片视频,但是访问量也高,流量消耗也很大,所以就需要让用户就近访问,简单讲就是让用户访问网站时更快。
京东的云计算分布式文件系统,后台所有服务全部用go实现,说明golang的计算能力强
Golang的概述什么是程序
程序:就是完成某个功能的指令的集合
指令:为了让计算机执行某些操作活解决某个问题而编写的一系列有序指令的集合,指令被逐条执行
Google为什么要创造Go语言
计算机硬件技术更新频繁,性能提高很快,目前主流的编程语言发展明显落后于硬件,不能合理的利用多核多CPU的优势提升软件系统性能
软件系统复杂度越来越高,维护成本越来越高,目前缺乏一个足够简洁高效的编程语言(风格不统一,计算能力不够,处理并发不够好)
企业运行维护很多C/C++的项目C/C++程序运行速度虽然很快,但是编译速度却很慢,同时还存在内存泄漏的一系列的困扰需要解决
版本
https://golang.org/dl/
go1.16.6为最新版本
Go语言的特点Go语言保证了既能到达静态编译语言的安全喝性能,又达到了动态语言开发维护的高效率,使用一个表达式来形容Go语言 Go = C + Python ,说明Go语言既有C静态语言程序的运行速度,又能达到Python动态语言的快速开发
1.从C语言中继承了很多理念,包括表达式语法,控制结构,基础数据类型,调用参数传值,指针等等,也保留了和C语言一样的编译执行方式及弱化的指针
//Go语言的指针的使用特点(体验)
func testPtr(num *int){
*num = 20
}
2.引入包的概念,用于组织程序结构,Go语言的一个文件都要归属于一个包,而不能单独存在
package main //一个Go文件需要再一个包
import "fmt"
func sayOk(){
//输出一句话
fmt.println("ok")
}
3.垃圾回收机制,内存自动回收,不需要开发人员管理
4.天然并发
①从语言层面支持并发,实现简单
②goroutine ,轻量级线程,可实现大并发处理,搞笑利用多核。
③基于CPS并发模型(Communicating Sequential Processes)实现
5.吸收了管道通信机制,形成Go语言特有的管道channel通过管道channel,可以实现不同的goroute之间的相互通信
6.函数可以返回多个值(示意代码)
//写一个函数,实现同时返回 和,差
//Go函数支持返回多个值
func getSumAndSub(n1 int, n2 int) (int, int ){
sum := n1 + n2 //Go语句后面不要带分号因为编译器会自动带上
sub := n1 - n2
return sum , sub
}
7.新的创新:比如切片、延时执行defer等
Go语言的开发工具VSCode (visual studio code)支持Go语言的语法高亮,安装Go语言插件,还可以支持智能提示,编译运行等功能
https://code.visualstudio.com/Download下载地址
Go开发环境安装和配置SDK
Windows
SDK的全称(Software Development Kit 软件开发工具包)
SDK是提供给开发人员使用的,其中包含了对应开发语言的工具包(比如编译的工具、运行的工具、以及API)
https://golang.org/dl/下载地址
解压到自己想要安装的目录,尽量路径以英文,不要有特殊符号以及中文
测试安装是否完成
打开cmd命令提示符
进入go文件的bin目录,复制路径里面有两个指令(go ,gofmt)老版本还要一个godoc指令
配置环境变量
根据Windows系统在查找可执行程序的原理,可以将Go所在路径定义到环境变量中,让系统帮我们去找运行执行的程序,这样在任何目录下都可以执行go指令
环境变量 | 说明 |
---|---|
GOROOT | 指定SDK的安装路径 d:/programs/go |
Path | 添加SDK的/bin目录 |
GOPATH | 工作目录,将来我们的Go项目的工作路径 |
检查配置环境
命令提示符:go version
Linux
上传从官网下载的版本
传入Linux中
cp go1.16.6.linux-amd64.tar.gz /opt
tar -zxvf go1.16.6.linux-amd64.tar.gz
这个时候go文件中也有一个bin目录,bin目录中有两个或者三个可执行文件
./go version ——就能看到go安装成功
此时需要配置环境变量才能在别的目录下使用go的命令
在Linux中的/etc/profile文件中底部添加
export GOROOT=/opt/go
export PATH=$PATH:$GOROOT/bin
export GOPATH=$HOME/goproject
需要注销用户或者刷新环境变量才能生效(重启init 6或者source /etc/profile)
Mac
上传从官网下载的版本
文件安装到Mac上
go1.16.6.darwin-amd64.tar.gz
在用户目录下创建一个目录,叫go_dev,压缩文件移动到该目录下
建议安装目录放在go_dev/go下
tar -zxvf go1.16.6.darwin-amd64.tar.gz
这个时候go文件中也有一个bin目录,bin目录中有两个或者三个可执行文件
./go version
此时需要配置环境变量才能在别的目录下使用go的命令
在Mac中的/etc/profile文件中底部添加
export GOROOT=$HOME/go_dev/go
export PATH=$PATH:$GOROOT/bin
export GOPATH=$HOME/goproject
注意这里要:wq!强制保存退出
重新注销或者重启,source /etc/profile也可以——即生效