语言介绍
产生及发展
核心研发团队三个大牛: Ken Thompson(肯 汤普森)、 Rob Pike(罗布 派克)、Robert Griesemer
Google创造Golang的原因:
- 计算机硬件频繁更新,性能提高很快,主流编程语言无法利用多核多CPU的有事
- 软件编程复杂度越来越高,维护成本也越来越高,缺乏一个足够简洁高效的语言
- C/C++项目运行速度虽然很快,但是存在内存泄露的问题。
总结:目前主流的编程语言要么开发运维不够简洁、要么运行不够高效(不能充分利用多核多CPU)、要么存在内存泄露的问题。
Golang的发展:
- 2007年谷歌工程师Ken Thompson(肯 汤普森)和Rob Pike(罗布 派克)开发设计了Golang最初的原型。
- 2009年11月10日,Google将Golang发布并开源
- 2015年8月19日,Go 1.5版发布,移除了最后参与的C代码
- 2017年2月17 日,Go 语言1.8发布,
- 2018年2月16日,1.10发布
特点
Go语言技能达到静态编程语言的安全和性能,又有动态开发语言的开发维护的高效率特性。用一个表达式来表达就是:C+Python (即有C的运行效率,又有Python 的开发运维效率)
- 从C语言中继承了很多理念,包括语法、控制结构、基础数据类型、参数传值、指针等
- 引入包的概念,程序文件不能单独存在,必须归属一个包
- 引入垃圾回收机制,内存自动刚回收,不需要开发人员管理
- 天然支持并发
从语言层面支持并发,实现简单
goroutine,轻量级现成,可实现大并发处理,高效利用多核
基于CPS并发模型(Communicating Sequential Processes)实现 - 吸收了管道通信机制,形成Go语言特有的管道,通过管道实现不同goroute之间的通信。
- 函数可以返回多个值
- 有一些新的创新,如:切片slice、延时执行defer
应用领域
- 区块链,分布式账本技术,让每个人均可参与数据库记录
- 后端应用服务,支撑后台流量,统计运行指标。如美团后台流量支撑程序。
- 云计算/云服务后台应用,如盛大CDN、京东消息吐送云服务
环境安装
程序下载
自行下载安装 vscode
下载 golang SDK 下载地址
配置及测试
解压压缩包到指定目录(目录路径不包含中文和空格)我这里路径是 D:\greenPro\go
配置三个环境变量:
GOROOT: D:\greenPro\go goSDK解压后的跟路径
Path: D:\greenPro\go\bin goSDK解压后跟路径下的bin 路径
GOPATH: D:\works\goworks 程序开发使用的路径
win+R 运行命令行 执行 go 看到如下信息标识安装成功
示例程序编写及运行
上述GOPATH路径下通过vscode 编写Hello.go内容如下
package main
import "fmt"
func main(){
fmt.Println("hello world!");
}
进入Hello.go所在目录,执行如下命令执行效果如下
D:\works\goworks\go01\main> go run Hello.go
hello world!
也可以先编译再执行 如下
PS D:\works\goworks\go01\main> go build Hello.go //编译完成后目录下出现 Hello.exe 的可执行文件
PS D:\works\goworks\go01\main>./Hello //运行可执行文件
hello world!
代码编译后生成的执行文件,复制到没有安装go环境的机器上,仍然可以运行。因为编译时将程序运行需要的内容打包到了执行文件中
其他注意事项
注释
行注释
// 这行是注释
块注释
/*
这里是注释
*/
特殊语法规则
- import 的包如果没有用到,或者变量定义后没有用到 都会报错。
- 程序执行入口是main 函数
- 严格区分大小写
- 每个语句后不需要分号(Go会自动在每行末尾追加分号)
- Go编译器是一行行进行编译的,因此我们一行就写一条语句,不能多条语句写在同一行,否则报错
- 以下写法会报错
func main()//大括号必须在这个位置
{
//
}
代码风格
- 官方更推荐行注释来写注释
- 正确的缩进和空白 可以使用 shift+Tab 操作调整 、使用 gofmt 进行代码格式化 gofmt -w hello.go
- 运算符两边增加1个空格
- 一行不超过80 个字符,超过的使用换行展示尽量优雅展示