一、为何而生

go语言(或 Golang)是 Google 开发的开源编程语言,诞生于2006 年 1 月 2 日下午15 点 4 分 5 秒,于 2009 年 11 月开源,2012 年发布 go 稳定版。Go 语言在多核并发上拥有原生的设计优势,Go 语言从底层原生支持并发,无须第三方库、开发者的编程技巧和开发经验。Go 是非常年轻的一门语言,它的主要目标是“兼具 Python 等动态语言的开发速度和 C/C++ 等编译型语言的性能与安全性”。很多公司,特别是中国的互联网公司,即将或者已经完成了使用 Go 语言改造旧系统的过程。经过 Go 语言重构的系统能使用更少的硬件资源获得更高的并发和 I/O 吞吐表现。充分挖掘硬件设备的潜力也满足当前精细化运营的市场大环境。Go 语言的并发是基于 goroutine 的,goroutine 类似于线程,但并非线程。可以将 goroutine 理解为一种虚拟线程。Go 语言运行时会参与调度 goroutine,并将 goroutine 合理地分配到每个 CPU 中,最大限度地使用CPU性能。开启一个 goroutine 的消耗非常小(大约 2KB 的内存),你可以轻松创建数百万个goroutinegoroutine 的特点如下:

a、goroutine 具有可增长的分段堆栈。这意味着它们只在需要时才会使用更多内存。
b、goroutine 的启动时间比线程快。
c、goroutine 原生支持利用 channel 安全地进行通信。
d、goroutine 共享数据结构时无需使用互斥锁。

二、优势是什么?

语法简洁

Go 语言简单易学,学习曲线平缓,不需要像 C/C++ 语言动辄需要两到三年的学习期。Go 语言被称为“互联网时代的 C 语言”。Go 语言的风格类似于 C 语言。其语法在 C 语言的基础上进行了大幅的简化,去掉了不需要的表达式括号,循环也只有 for 一种表示方法,就可以实现数值、键值等各种遍历。

代码风格统一

Go 语言提供了一套格式化工具 —— go fmt。一些 Go 语言的开发环境或者编辑器在保存时,都会使用格式化工具进行修改代码的格式化,这样就保证了不同开发者提交的代码都是统一的格式。

开发效率高

Go 语言实现了开发效率与执行效率的完美结合,让你像写 Python 代码(效率)一样编写 C 代码(性能)。

三、使用 Go 语言的公司

Google:https://github.com/kubernetes/kubernetes

Facebook:https://github.com/facebookgo

腾讯

百度

360 开源日志系统:https://github.com/Qihoo360/poseidon

四、Go 语言适合做什么

  • 服务端开发
  • 分布式系统,微服务
  • 网络编程
  • 区块链开发
  • 内存 KV 数据库,例如 boltDB、levelDB
  • 云平台

五、Go 语言的前景

目前 Go 语言已经⼴泛应用于人工智能、云计算开发、容器虚拟化、⼤数据开发、数据分析及科学计算、运维开发、爬虫开发、游戏开发等领域。Go 语言简单易学,天生支持并发,完美契合当下高并发的互联网生态。Go 语言的岗位需求持续高涨,目前的 Go 程序员数量少,待遇好。抓住趋势,要学会做一个领跑者而不是跟随者。国内 Go 语言的需求潜力巨大,目前无论是国内大厂还是新兴互联网公司基本上都会有 Go 语言的岗位需求。

六、Go 开发入门

开发环境安装

Go官网(https://golang.org/dl/ ) 下载安装包。以下以 Windows 环境为例:

Windows 安装

验证安装

配置环境变量

GOPATH 是一个环境变量,用来表明你写的go项目的存放路径。GOPATH 路径最好只设置一个,所有的项目代码都放到GOPATHsrc目录下。将你的安装目录(D:\Program Files\Go\)添加到环境变量:

检查电脑里面是否存在 GOPATH 并且设置值为你要存 Go 代码的目录。同时在 path 里面添加 Go 的安装目录和 GOPATH 目录

在 GOPATH 目录下新建 3 个文件夹

Go 项目目录

在进行 Go 语言开发的时候,我们的代码总是会保存在 $GOPATH/src 目录下。在工程经过 go buildgo install 或 go get 等指令后,会将下载的第三方包源代码文件放在 $GOPATH/src 目录下, 产生的二进制可执行文件放在 $GOPATH/bin 目录下,生成的中间缓存文件会被保存在 $GOPATH/pkg 下。如果我们使用 Git 来管理我们的项目代码时,我们只需要添加 $GOPATH/src 目录的源代码即可。bin 和 pkg 目录的内容无需版本控制。

个人开发者

我们知道源代码都是存放在 GOPATH src目录下,那我们可以按照下图来组织我们的代码。

流行的项目结构

Go 语言中也是通过包来组织代码文件,我们可以引用别人的包也可以发布自己的包,但是为了防止不同包的项目名冲突,我们通常使用顶级域名来作为包名的前缀,这样就不担心项目名冲突的问题了。因为不是所有个人开发者都拥有自己的顶级域名,所以目前流行的方式是使用个人的 Github 用户名来区分不同的包。

企业开发者

Hello World

学习语言的第一个程序肯定是 hello word 了,进入前面创建的三个目录里面的 src 目录。在 src 目录下创建一个 hello 目录,在 hello 目录中创建一个 main.go 文件:

package main  // 声明 main 包,表明当前是一个可执行程序import "fmt"  // 导入内置 fmt func main(){  // main函数,是程序执行的入口fmt.Println("Hello World!")  // 在终端打印 Hello World!
}

在 hello 目录下执行:go build。Go 编译器会去 GOPATH 的 src目录下查找你要编译的 hello 项目,编译得到的可执行文件会保存在执行编译命令的当前目录下,如果是 windows平台会在当前目录下找到 hello.exe 可执行文件。在终端直接执行该 hello.exe 文件:

D:\ZHY\Go\src\hello>hello.exe
Hello World!

我们还可以使用 -o 参数来指定编译后可执行文件的名字。

go build -o testhello.exe

Go 语言学习总结(1)—— Go 入门简介相关推荐

  1. C语言学习书籍 零基础入门篇

    1.C语言入门很简单(配光盘)(入门很简单丛书) 2.零起点学通C语言(多媒体范例教学)(DVD)(C语言软件开发从零基础到精通) 3.C语言从入门到精通 4.啊哈C语言!逻辑的挑战(修订版)--20 ...

  2. go get 拉取指定版本_go语言学习笔记-基础知识-3

    相关文档 go语言学习笔记-目录 1.简介 1.1 什么是GO Go 是一个开源的编程语言,它能让构造简单.可靠且高效的软件变得容易.Go是从2007年末由Robert Griesemer, Rob ...

  3. Python语言学习:python语言的特点、入门、基础用法之详细攻略

    Python语言学习:python语言的特点.入门.基础用法之详细攻略 相关内容 Python 基础教程 目录 python语言的特点 python语言的入门 python语言的基础用法 python ...

  4. R语言学习笔记——入门篇:第一章-R语言介绍

    R语言 R语言学习笔记--入门篇:第一章-R语言介绍 文章目录 R语言 一.R语言简介 1.1.R语言的应用方向 1.2.R语言的特点 二.R软件的安装 2.1.Windows/Mac 2.2.Lin ...

  5. Python语言学习之lambda:lambda函数的简介、使用方法、案例大全之详细攻略

    Python语言学习之lambda:lambda函数的简介.使用方法.案例大全之详细攻略 目录 lambda函数的简介 1.lambda匿名函数的格式 2.lambda函数特点 3.lambda函数与 ...

  6. Python语言学习:三种随机函数random.seed()、numpy.random.seed()、set_random_seed()及random_normal的简介、使用方法(固定种子)详细攻略

    Python语言学习:三种随机函数random.seed().numpy.random.seed().set_random_seed()及random_normal的简介.使用方法(固定种子)之详细攻 ...

  7. Python语言学习之pandas:DataFrame二维表的简介、常用函数、常用案例之详细攻略

    Python语言学习之pandas:DataFrame二维表的简介.常用函数.常用案例之详细攻略 目录 DataFrame的简介 DataFrame的常用案例 1.写入和读取excel表格文件

  8. Python语言学习之图表可视化:python语言中可视化工具包的简介、安装、使用方法、经典案例之详细攻略

    Python语言学习之图表可视化:python语言中可视化工具包的简介.安装.使用方法.经典案例之详细攻略 目录 python语言中可视化工具包的简介 python语言中可视化工具包的安装 pytho ...

  9. Python语言学习:Python常用自带库(imageio、pickle)简介、使用方法之详细攻略

    Python语言学习:Python常用自带库(imageio.pickle)简介.使用方法之详细攻略 目录 imageio简介及其常见使用方法 pickle简介及其常见使用方法 简介 使用方法 简介及 ...

  10. python语言学习零基础教学视频_Python告白小白视频教程(零基础入门)

    1 Python编程基础入门篇通过本次课程的学习,我们每个人都可以进入python世界里,从简单到高级,让人人都能学会python,我们在学习的时候,python让我们的运维变得更有乐趣,让我们的运维 ...

最新文章

  1. smarty半小时快速上手教程
  2. python基础练习(八)
  3. 200528更新arduino开发ESP8266配置方法,入门必看,esp8266开发板库离线安装包package2.7.1...
  4. “压扁数组”技巧(flattening the array)
  5. IT民工系列——c#计算任意四则混合运算(非函数版)
  6. 鸿蒙系统天气,墨迹天气携手鸿蒙系统 以精细化气象服务助力全场景生态建设...
  7. 转:flex [Inspectable]标签详解
  8. VS Code远程连接矩池云GPU主机
  9. python---之os.path.split()函数
  10. uniapp vite 路由跳转、登录模块封装(非无感登录)
  11. 论文阅读:Automatic Landmark Estimation for Adolescent Idiopathic Scoliosis Assessment Using BoostNet
  12. h5怎么做分享到QQ 、朋友圈、微信 、微博等功能
  13. 性价比降噪蓝牙耳机推荐,学生党值得入手的降噪蓝牙耳机分享
  14. 串联谐振电路的品质因数
  15. IntelliJ IDEA 常见文件类型的图标介绍
  16. android 获取栈顶activity,android获取当前栈顶的activity
  17. 计算机程序必须具有硬盘才能工作吗,2016年3月计算机一级考试WPS试题及答案
  18. ipad越狱后怎么还原?
  19. 抖音取图表情包小程序源码+创作者入驻+流量主
  20. 第六章:Shiro的Realms

热门文章

  1. 车仪表台上的装饰_给车“纹身”贴这些的注意,有人挨罚啦!扣不扣分?!看这里...
  2. java自动类型转换与强制类型转换
  3. spring和jump区别,JUMP和CALL之间的区别
  4. 计算机桌面亮度调整,接近完美:如何调整计算机屏幕的亮度?如何调整计算机屏幕的亮度[graphic]...
  5. 115. 不同的子序列(JavaScript)
  6. python散点图密度颜色_Python实现彩色散点图绘制(利用色带对散点图进行颜色渲染)...
  7. 单因素方差分析graphpad_python单因素方差分析实例
  8. iphone以旧换新活动_上苏宁易购预定iPhone12,以旧换新享5G!
  9. Python之list每个元素小数点精度控制
  10. 《Essential C++》笔记之设计一个泛型算法(二)