目录
1.1.1. Go语言为并发而生
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的内存),你可以轻松创建数百万个goroutine
。
goroutine
的特点:
1.`goroutine`具有可增长的分段堆栈。这意味着它们只在需要时才会使用更多内存。
2.`goroutine`的启动时间比线程快。
3.`goroutine`原生支持利用channel安全地进行通信。
4.`goroutine`共享数据结构时无需使用互斥锁。
1.1.2. Go语言简单易学
语法简洁
Go 语言简单易学,学习曲线平缓,不需要像 C/C++ 语言动辄需要两到三年的学习期。Go 语言被称为“互联网时代的C语言”。Go 语言的风格类似于C语言。其语法在C语言的基础上进行了大幅的简化,去掉了不需要的表达式括号,循环也只有 for 一种表示方法,就可以实现数值、键值等各种遍历。
代码风格统一
Go 语言提供了一套格式化工具——go fmt。一些 Go 语言的开发环境或者编辑器在保存时,都会使用格式化工具进行修改代码的格式化,这样就保证了不同开发者提交的代码都是统一的格式。(吐槽下:再也不用担心那些看不懂的黑魔法了…)
开发效率高
Go语言实现了开发效率与执行效率的完美结合,让你像写Python代码(效率)一样编写C代码(性能)。
1.1.3. 使用go的公司
- 腾讯
- 百度
- 360开源日志系统
1.1.4. go适合做什么
- 服务端开发
- 分布式系统,微服务
- 网络编程
- 区块链开发
- 内存KV数据库,例如boltDB、levelDB
- 云平台
1.1.5. 学习Go语言的前景
目前Go语言已经⼴泛应用于人工智能、云计算开发、容器虚拟化、⼤数据开发、数据分析及科学计算、运维开发、爬虫开发、游戏开发等领域。
Go语言简单易学,天生支持并发,完美契合当下高并发的互联网生态。Go语言的岗位需求持续高涨,目前的Go程序员数量少,待遇好。
抓住趋势,要学会做一个领跑者而不是跟随者。
国内Go语言的需求潜力巨大,目前无论是国内大厂还是新兴互联网公司基本上都会有Go语言的岗位需求。
1.1.6. 学习Go语言目录导航
- 前景
- 开发环境
- Go基础
- 流程控制
- 函数
- 方法
- 面向对象
- 网络编程
- 并发编程
- 数据操作
- 常用标准库
- beego框架
- gin框架
- Iris框架
- Echo框架
- 微服务
- Go高级
- 插件库
- 跨平台交叉编译
- 文件上传
- 依赖管理
- 高效读取配置信息
- 实时读取文件内容
- 加密解密
- 跨域
- 系统性能数据gopsutil库
- pprof性能调优
- 数据绑定结构体
- 验证器
- 验证码
- 流量控
- 发邮件
- 页面静态化
- 文件监控
- 雪花算法
- 函数验证中间键
- 封装websocket
- 生成PDF
- 获取HTTP请求的IP地址
- JSON Web令牌
- 检查切片中是否存在元素
- 查看图片主要颜色
- 判断字符串开头
- 字符串中解析日期
- 压缩解压文件
- PDF转JPG
- Sessions
- markdown解析库
- 选项设计模式
- 运行系统命令和二进制文件
- proxy转发
- 字符串数组排序
- 带进度条大文件下载
- gjson
- 解决中文乱码
- 二维码
- Yaml编码和解码
- 中文分词
- 权限管理
- Swaggo
- 网页截图
- 汉字转拼音
- CLI框架
- Google 翻译API
- 限流器
- 缓存
- 支付插件
- 获取https过期时间
- 获取服务器配置
- 热重启
- 原生中间件
- 设置https
- 项目
- 开源仓库
- go学习线路图
- 音频和音乐
- 身份验证和OAuth
- 机器人相关
- 标准CLI
- 构建用户界面库
- 配置
- 持续集成
- CSS预处理器
- 数据结构
- 数据库
- 数据库驱动
- 日期和时间
- 分布式系统
- 电子邮件
- 嵌入式脚本语言
- 错误处理
- 文件
- 金融
- Forms
- 功能性
- 游戏开发
- 生成与泛型
- 地理位置
- 编译器
- Goroutines
- 图形界面
- 图片
- 物联网
- 工作计划
- JSON格式
- Logging
- 机器学习
- 实现消息传递
- 微软办公软件
- 依赖注入
- 项目布局
- Strings
- 其他
- 自然语言处理
- 网络
- HTTP客户端
- OpenGL
- ORM
- 包管理
- 性能
- 查询语言
- 资源嵌入
- 科学与数据分析
- 安全
- 序列化
- 服务器应用
- 流处理
- 模板引擎
- 测试
- 文字处理
- 第三方API
- 实用工具
- UUID
- 验证方式
- 版本控制
- 视频
- Web框架
- 中间件
- 路由器
- 视窗
- XML格式
- 代码分析
- 编辑器插件
- 硬件
- go生成工具
- go工具
- DevOps工具
- 持续更新...
- 其他
- 面试题
- go中文标准文档
- go专家编程
- go设计模式
- go公众号开发
- 关于
- 更新列表
- 持续更新中...